diff --git a/CHANGELOG.md b/CHANGELOG.md
index e110e4cd6..6908d764a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,167 @@
+# Version 24.52 - 2024-01-07
+
+### Added 🆕
+
+- chore: refs #8197 remove console log by:alexm
+- chore: refs #8197 replace name by:alexm
+- chore: refs #8197 unnecessary file by:alexm
+- feat: #8110 apply mixin in quasar components by:Javier Segarra
+- feat(Account & AccountRole): refs #8197 add VnCardMain by:alexm
+- feat: addDptoLink by:Jtubau
+- feat: added restore ticket function in ticket descriptor menu by:Jon
+- feat: add support service wip by:jorgep
+- feat: focus menu searchbar by:jorgep
+- feat: make additional data object by:jorgep
+- feat: message to grant access by:jorgep
+- feat: refs #6583 add default param by:jorgep
+- feat: refs #6583 add destination opt filter by:jorgep
+- feat: refs #6583 add icon by:jorgep
+- feat: refs #6583 add locale by:jorgep
+- feat: refs #7072 added test to computed fn total by:Jtubau
+- feat: refs #7235 update invoice out global form to fetch config based on serial type by:jgallego
+- feat: refs #7301 add exclude inventory supplier from list by:pablone
+- feat: refs #7301 enhance VnDateBadge styling and improve ItemLastEntries component by:pablone
+- feat: refs #7882 Added distribution point by:guillermo
+- feat: refs #7882 Added longitude & latitude by:guillermo
+- feat: refs #7936 add autocomplete on tab fn by:jorgep
+- feat: refs #7936 add company filter by:jorgep
+- feat: refs #7936 add currency check before fetching by:jorgep
+- feat: refs #7936 add dueDated field by:jorgep
+- feat: refs #7936 add number validation to VnInputNumber & new daysAgo filter in InvoiceInFilter by:jorgep
+- feat: refs #7936 add optionCaption by:jorgep
+- feat: refs #7936 add row click navigation to InvoiceInSerial by:jorgep
+- feat: refs #7936 add unit tests by:jorgep
+- feat: refs #7936 add useAccountShortToStandard composable by:jorgep
+- feat: refs #7936 calculate exchange & update taxable base by:jorgep
+- feat: refs #7936 enhance downloadFile function to support opening in a new tab by:jorgep
+- feat: refs #7936 enhance getTotal fn & add unit tests by:jorgep
+- feat: refs #7936 enhance vn-select by:jorgep
+- feat: refs #7936 improve optionLabel logic in InvoiceInVat component for better handling of numeric values by:jorgep
+- feat: refs #7936 limit decimal places by:jorgep
+- feat: refs #7936 make fields required by:jorgep
+- feat: refs #7936 show country code & isVies fields by:jorgep
+- feat: refs #7936 show id & value by:jorgep
+- feat: refs #7936 simplify optionLabel wip by:jorgep
+- feat: refs #7936 update 'isVies' label to use global translation key by:jorgep
+- feat: refs #7936 update option labels in InvoiceIn components for better clarity by:jorgep
+- feat: refs #7936 use default invoice data by:jorgep
+- feat: refs #8001 change request by:robert
+- feat: refs #8001 ticketExpeditionGrafana by:robert
+- feat: refs #8194 created VnSelectWorker component and use it in Lilium by:Jon
+- feat: refs #8197 better leftMenu and VnCardMain improvements by:alexm
+- feat: refs #8197 default leftMenu by:alexm
+- feat: refs #8197 default sectionName by:alexm
+- feat: refs #8197 keepData in VnSection by:alexm
+- feat: refs #8197 vnTableFilter by:alexm
+- feat: refs #8197 working rightMenu by:alexm
+- feat: remove re-fetch when add element by:Javier Segarra
+- feat: remove search after category by:Javier Segarra
+- feat: requested changes in item module by:Jon
+- feat: update quantity by:Javier Segarra
+- feat(VnPaginate): refs #8197 hold data when change to Card by:alexm
+
+### Changed 📦
+
+- perf: #6896 REMOVE COMMENTS by:Javier Segarra
+- perf: qFormMixin by:Javier Segarra
+- perf: qFormMixin improvement by:Javier Segarra
+- perf: refs #8194 select worker component by:Jon
+- perf: refs #8197 perf by:alexm
+- perf: remove comments by:Javier Segarra
+- perf: remove unused variables (origin/warmfix_noUsedVars) by:Javier Segarra
+- refactor: added again search emit by:Jon
+- refactor: add useCau composable by:jorgep
+- refactor: deleted log by:Jon
+- refactor: deleted onUnmounted code by:Jon
+- refactor: deleted useless hidden tag by:Jon
+- refactor: deleted warnings and corrected itemTag by:Jon
+- refactor: drop logic by:jorgep
+- refactor: ignore params when searching by id on searchbar (origin/VnSearchbar-SearchRemoveParams) by:Jon
+- refactor: log error by:Jon
+- refactor: refs #7936 locale by:jorgep
+- refactor: refs #7936 simplify getTotal fn by:jorgep
+- refactor: refs #7936 update label capitalization and replace invoice type options by:jorgep
+- refactor: refs #8194 deleted unnecessary label by:Jon
+- refactor: refs #8194 modified select worker template by:Jon
+- refactor: refs #8194 modified select worker to allow no one filter from monitor ticket by:Jon
+- refactor: refs #8194 moved translation to the correct place by:Jon
+- refactor: refs #8194 requested changes by:Jon
+- refactor: refs #8194 structure changes in component and related files by:Jon
+- refactor: refs #8197 adapt AccountAcls to VnCardMain by:alexm
+- refactor: refs #8197 adapt AccountAlias by:alexm
+- refactor: refs #8197 adapt Ticket to VnCardMain by:alexm
+- refactor: refs #8197 backward compatible (8197-VnCardMain_backwardCompatibility) by:alexm
+- refactor: refs #8197 rename VnSectionMain to VnModule and VnCardMain to VnSection by:alexm
+- refactor: refs #8288 changed invoice out spanish translation by:provira
+- refactor: use locale keys by:jorgep
+- refactor: use teleport to avoid qdrawer overlapping by:Jon
+- refactor: use VnSelectWorker by:Jon
+
+### Fixed 🛠️
+
+- fix: account by:carlossa
+- fix: account create by:carlossa
+- fix: accountList create by:carlossa
+- fix(AccountList): use $refs by:alexm
+- fix: add data-key by:alexm
+- fix: addLocales by:Jtubau
+- fix: dated field by:Jon
+- fix: e2e by:jorgep
+- fix: fix department filter by:carlossa
+- fix: fixed translations by:Javier Segarra
+- fix: fixed translations by:provira
+- fix: get total from api by:Javier Segarra
+- fix: handle non-object options by:jorgep
+- fix: monitorPayMethodFilter by:carlossa
+- fix: orderBy priority by:Javier Segarra
+- fix: prevent null by:jorgep
+- fix: redirection vnTable VnTableFilter by:alexm
+- fix: refs #6389 fix filter trad by:carlossa
+- fix: refs #6389 fix front, filters, itp by:carlossa
+- fix: refs #6389 front add packing filter by:carlossa
+- fix: refs #6389 front by:carlossa
+- fix: refs #6389 front filters by:carlossa
+- fix: refs #6389 ipt by:carlossa
+- fix: refs #6389 packing by:carlossa
+- fix: refs #6583 update checkbox for filtering by destination in TicketAdvanceFilter by:jorgep
+- fix: refs #7031 add test e2e by:carlossa
+- fix: refs #7031 fix zoneTest by:carlossa
+- fix: refs #7301 unnecessary console logs from ItemLastEntries.vue by:pablone
+- fix: refs #7936 changes by:jorgep
+- fix: refs #7936 decimal places & locale by:jorgep
+- fix: refs #7936 descriptor & dueday by:jorgep
+- fix: refs #7936 exclude disabled els on tab by:jorgep
+- fix: refs #7936 format tax calculation to two decimal places by:jorgep
+- fix: refs #7936 improve error handling by:jorgep
+- fix: refs #7936 redirection by:jorgep
+- fix: refs #7936 rollback by:jorgep
+- fix: refs #7936 serial by:jorgep
+- fix: refs #7936 tabulation wip by:jorgep
+- fix: refs #7936 test by:jorgep
+- fix: refs #8114 clean by:carlossa
+- fix: refs #8114 fix agencyList by:carlossa
+- fix: refs #8114 fix lifeCycle hooks by:carlossa
+- fix: refs #8114 fix pr by:carlossa
+- fix: refs #8114 fix removeAddress by:carlossa
+- fix: refs #8114 orderList by:carlossa
+- fix: refs #8114 remove logs by:carlossa
+- fix: refs #8197 mapKey (origin/8197-perf_vnTableInside, 8197-perf_vnTableInside) by:alexm
+- fix: refs #8197 redirection (8197-perf_redirection) by:alexm
+- fix: refs #8197 staticParams and redirect by:alexm
+- fix: refs #8197 vnPaginate onFetch emit by:alexm
+- fix: refs #8197 vnPaginate when change :id by:alexm
+- fix: refs #8197 vnTableFilter in vnTable by:alexm
+- fix: refs #8315 ticketBoxing test by:alexm
+- fix: remove url by:carlossa
+- fix: rollback by:jorgep
+- fix: test by:jorgep
+- fix(VnDmsList): refs #8197 add mapKey by:alexm
+- revert: refs #8197 arrayData changes by:alexm
+- test: refs #8197 fix e2e by:alexm
+- test: refs #8315 fix claimDevelopment fixtures by:alexm
+- test: refs #8315 fix clientList by:alexm
+- test: refs #8315 fix VnSelect in e2e by:alexm
+
# Version 24.50 - 2024-12-10
### Added 🆕
diff --git a/package.json b/package.json
index b5e62af11..c638b6c32 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "salix-front",
- "version": "25.02.0",
+ "version": "25.04.0",
"description": "Salix frontend",
"productName": "Salix",
"author": "Verdnatura",
diff --git a/src/components/CreateNewPostcodeForm.vue b/src/components/CreateNewPostcodeForm.vue
index c656fcb2f..39ebfe540 100644
--- a/src/components/CreateNewPostcodeForm.vue
+++ b/src/components/CreateNewPostcodeForm.vue
@@ -55,13 +55,6 @@ async function setCountry(countryFk, data) {
}
// Province
-
-async function handleProvinces(data) {
- provincesOptions.value = data;
- if (postcodeFormData.countryFk) {
- await fetchTowns();
- }
-}
async function setProvince(id, data) {
if (data.provinceFk === id) return;
const newProvince = provincesOptions.value.find((province) => province.id == id);
@@ -69,6 +62,7 @@ async function setProvince(id, data) {
postcodeFormData.provinceFk = id;
await fetchTowns();
}
+
async function onProvinceCreated(data) {
postcodeFormData.provinceFk = data.id;
}
diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue
index 7886d0567..07992f616 100644
--- a/src/components/VnTable/VnTable.vue
+++ b/src/components/VnTable/VnTable.vue
@@ -59,8 +59,8 @@ const $props = defineProps({
default: true,
},
bottom: {
- type: Object,
- default: null,
+ type: Boolean,
+ default: false,
},
cardClass: {
type: String,
@@ -314,7 +314,7 @@ function handleSelection({ evt, added, rows: selectedRows }, rows) {
show-if-above
>
-
+
-
-
-
- createAsDialog
- ? (showForm = !showForm)
- : handleOnDataSaved(create)
- "
- class="cursor-pointer fill-icon"
- color="primary"
- icon="add_circle"
- size="md"
- round
- flat
- shortcut="+"
- :disabled="!disabledAttr"
- />
-
- {{ createForm.title }}
-
-
-
+
+
+ createAsDialog
+ ? (showForm = !showForm)
+ : handleOnDataSaved(create)
+ "
+ class="cursor-pointer fill-icon"
+ color="primary"
+ icon="add_circle"
+ size="md"
+ round
+ flat
+ shortcut="+"
+ :disabled="!disabledAttr"
+ />
+
+ {{ createForm.title }}
+
+
diff --git a/src/components/common/VnBtnSelect.vue b/src/components/common/VnBtnSelect.vue
index b0616a6b2..3d96a55a6 100644
--- a/src/components/common/VnBtnSelect.vue
+++ b/src/components/common/VnBtnSelect.vue
@@ -14,6 +14,7 @@ defineProps({
hide-dropdown-icon
focus-on-mount
@update:model-value="promise"
+ data-cy="vnBtnSelect_select"
/>
diff --git a/src/components/common/VnDateBadge.vue b/src/components/common/VnDateBadge.vue
index fd6c9e8a4..83d39937a 100644
--- a/src/components/common/VnDateBadge.vue
+++ b/src/components/common/VnDateBadge.vue
@@ -11,9 +11,9 @@ function getBadgeAttrs(date) {
let timeDiff = today - timeTicket;
- if (timeDiff == 0) return { color: 'warning', 'text-color': 'black' };
- if (timeDiff < 0) return { color: 'success', 'text-color': 'black' };
- return { color: 'transparent', 'text-color': 'white' };
+ if (timeDiff == 0) return { color: 'warning', class: 'black-text-color' };
+ if (timeDiff < 0) return { color: 'success', class: 'black-text-color' };
+ return { color: 'transparent', class: 'normal-text-color' };
}
function formatShippedDate(date) {
@@ -29,3 +29,11 @@ function formatShippedDate(date) {
{{ formatShippedDate(date) }}
+
diff --git a/src/components/common/VnDmsList.vue b/src/components/common/VnDmsList.vue
index 52dd6ef79..ed3cadc6b 100644
--- a/src/components/common/VnDmsList.vue
+++ b/src/components/common/VnDmsList.vue
@@ -297,7 +297,7 @@ defineExpose({
ref="dmsRef"
:data-key="$props.model"
:url="$props.model"
- :filter="dmsFilter"
+ :user-filter="dmsFilter"
:order="['dmsFk DESC']"
:auto-load="true"
@on-fetch="setData"
diff --git a/src/components/common/VnInputDate.vue b/src/components/common/VnInputDate.vue
index fdef6a9a8..952a843e3 100644
--- a/src/components/common/VnInputDate.vue
+++ b/src/components/common/VnInputDate.vue
@@ -1,14 +1,12 @@
diff --git a/src/components/common/VnSection.vue b/src/components/common/VnSection.vue
index e69e586b5..edd8d3dfa 100644
--- a/src/components/common/VnSection.vue
+++ b/src/components/common/VnSection.vue
@@ -4,11 +4,12 @@ import VnSearchbar from 'components/ui/VnSearchbar.vue';
import VnTableFilter from '../VnTable/VnTableFilter.vue';
import { onBeforeMount, computed } from 'vue';
import { useArrayData } from 'src/composables/useArrayData';
+import { useRoute } from 'vue-router';
const $props = defineProps({
section: {
type: String,
- required: true,
+ default: null,
},
dataKey: {
type: String,
@@ -38,14 +39,28 @@ const $props = defineProps({
type: Boolean,
default: true,
},
+ keepData: {
+ type: Boolean,
+ default: true,
+ },
});
-const sectionValue = computed(() => $props.section ?? $props.dataKey);
+const route = useRoute();
let arrayData;
+const sectionValue = computed(() => $props.section ?? $props.dataKey);
+const isMainSection = computed(() => {
+ const isSame = sectionValue.value == route.name;
+ if (!isSame && arrayData) {
+ arrayData.reset(['userParams', 'userFilter']);
+ }
+ return isSame;
+});
+
onBeforeMount(() => {
if ($props.dataKey)
arrayData = useArrayData($props.dataKey, {
searchUrl: 'table',
+ keepData: $props.keepData,
...$props.arrayDataProps,
navigate: $props.redirect,
});
@@ -74,6 +89,6 @@ onBeforeMount(() => {
-
+
diff --git a/src/components/common/VnSelect.vue b/src/components/common/VnSelect.vue
index 8aa725b4a..58b7667d2 100644
--- a/src/components/common/VnSelect.vue
+++ b/src/components/common/VnSelect.vue
@@ -166,7 +166,11 @@ onMounted(() => {
const arrayDataKey =
$props.dataKey ?? ($props.url?.length > 0 ? $props.url : $attrs.name ?? $attrs.label);
-const arrayData = useArrayData(arrayDataKey, { url: $props.url, searchUrl: false });
+const arrayData = useArrayData(arrayDataKey, {
+ url: $props.url,
+ searchUrl: false,
+ mapKey: $attrs['map-key'],
+});
function findKeyInOptions() {
if (!$props.options) return;
diff --git a/src/components/ui/VnFilterPanel.vue b/src/components/ui/VnFilterPanel.vue
index 2be508f9f..46c43356f 100644
--- a/src/components/ui/VnFilterPanel.vue
+++ b/src/components/ui/VnFilterPanel.vue
@@ -202,7 +202,11 @@ const getLocale = (label) => {
style="position: fixed; z-index: 1; right: 0; bottom: 0"
icon="search"
@click="search()"
- >
+ >
+
+ {{ t('globals.search') }}
+
+
diff --git a/src/components/ui/VnNotes.vue b/src/components/ui/VnNotes.vue
index e308ea9bb..1690a94ba 100644
--- a/src/components/ui/VnNotes.vue
+++ b/src/components/ui/VnNotes.vue
@@ -110,7 +110,7 @@ onBeforeRouteLeave((to, from, next) => {
:url="$props.url"
order="created DESC"
:limit="0"
- :filter="$props.filter"
+ :user-filter="$props.filter"
auto-load
ref="vnPaginateRef"
class="show"
diff --git a/src/components/ui/VnPaginate.vue b/src/components/ui/VnPaginate.vue
index a2ccd5d92..0111366f5 100644
--- a/src/components/ui/VnPaginate.vue
+++ b/src/components/ui/VnPaginate.vue
@@ -111,6 +111,7 @@ onMounted(async () => {
});
onBeforeUnmount(() => {
+ if (!store.keepData) arrayData.reset(['data']);
arrayData.resetPagination();
});
diff --git a/src/components/ui/VnSearchbar.vue b/src/components/ui/VnSearchbar.vue
index 4e284d8e4..a2d3b9ee1 100644
--- a/src/components/ui/VnSearchbar.vue
+++ b/src/components/ui/VnSearchbar.vue
@@ -126,6 +126,7 @@ async function search() {
delete filter.params.search;
}
await arrayData.applyFilter(filter);
+ searchText.value = undefined;
}
diff --git a/src/components/ui/VnSms.vue b/src/components/ui/VnSms.vue
index bf6e0695e..8b25ba5da 100644
--- a/src/components/ui/VnSms.vue
+++ b/src/components/ui/VnSms.vue
@@ -54,6 +54,7 @@ function formatNumber(number) {
:offset="100"
:limit="5"
auto-load
+ map-key="smsFk"
>
{
>
- {{ t('Delete') }}
+ {{ t('globals.delete') }}
diff --git a/src/pages/Customer/Card/CustomerConsumption.vue b/src/pages/Customer/Card/CustomerConsumption.vue
index 35f366e47..640e37ed3 100644
--- a/src/pages/Customer/Card/CustomerConsumption.vue
+++ b/src/pages/Customer/Card/CustomerConsumption.vue
@@ -2,7 +2,7 @@
import { ref, computed, onBeforeMount } from 'vue';
import axios from 'axios';
import { useI18n } from 'vue-i18n';
-import { toDate } from 'src/filters/index';
+import { dateRange, toDate } from 'src/filters/index';
import { useRoute } from 'vue-router';
import VnTable from 'components/VnTable/VnTable.vue';
@@ -104,18 +104,12 @@ function getParams() {
};
}
const userParams = computed(() => {
- const minDate = Date.vnNew();
- minDate.setHours(0, 0, 0, 0);
- minDate.setMonth(minDate.getMonth() - 2);
-
- const maxDate = Date.vnNew();
- maxDate.setHours(23, 59, 59, 59);
-
- return {
- campaign: campaignList.value[0]?.id,
- from: minDate,
- to: maxDate,
+ const campaign = campaignList.value[0]?.id;
+ const userParams = {
+ campaign,
+ ...updateDateParams(campaign, { from: Date.vnNew(), to: Date.vnNew() }),
};
+ return userParams;
});
const openReportPdf = () => {
openReport(`Clients/${route.params.id}/campaign-metrics-pdf`, getParams());
@@ -134,6 +128,23 @@ const sendCampaignMetricsEmail = ({ address }) => {
...getParams(),
});
};
+
+const updateDateParams = (value, params) => {
+ if (!value) {
+ params.from = null;
+ params.to = null;
+ return;
+ }
+ const campaign = campaignList.value.find((c) => c.id === value);
+ if (!campaign) return;
+
+ const { dated, previousDays, scopeDays } = campaign;
+ const _date = new Date(dated);
+ const [from, to] = dateRange(_date);
+ params.from = new Date(from.setDate(from.getDate() - previousDays)).toISOString();
+ params.to = new Date(to.setDate(to.getDate() + scopeDays)).toISOString();
+ return params;
+};
@@ -144,7 +155,6 @@ const sendCampaignMetricsEmail = ({ address }) => {
:order="['itemTypeFk', 'itemName', 'itemSize', 'description']"
:columns="columns"
search-url="consumption"
- :filter="filter"
:user-params="userParams"
:default-remove="false"
:default-reset="false"
@@ -201,6 +211,7 @@ const sendCampaignMetricsEmail = ({ address }) => {
class="q-px-sm q-pt-none fit"
dense
option-label="code"
+ @update:model-value="(data) => updateDateParams(data, params)"
>
diff --git a/src/pages/Customer/Card/CustomerMandates.vue b/src/pages/Customer/Card/CustomerMandates.vue
index 248515b4a..66cb44bc2 100644
--- a/src/pages/Customer/Card/CustomerMandates.vue
+++ b/src/pages/Customer/Card/CustomerMandates.vue
@@ -63,9 +63,10 @@ const columns = computed(() => [
{
-
-
+
+
{
- const { data } = await axios.get(`Entries/${entry.value.id}/getBuys`);
- if (data) entryBuys.value = data;
-
+ const { data } = await axios.get(`Entries/${entry.value.id}/getBuys`);
+ if (data) entryBuys.value = data;
};
@@ -173,13 +174,10 @@ const fetchEntryBuys = async () => {
-
+
{
/>
-
+
@@ -212,61 +207,42 @@ const fetchEntryBuys = async () => {
:label="t('entry.summary.travelAgency')"
:value="entry.travel.agency?.name"
/>
-
+
-
-
+
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
+
-import { onMounted, ref, computed } from 'vue';
+import { ref, computed } from 'vue';
import { useI18n } from 'vue-i18n';
import EntryFilter from './EntryFilter.vue';
import VnSearchbar from 'src/components/ui/VnSearchbar.vue';
-import { useStateStore } from 'stores/useStateStore';
import VnTable from 'components/VnTable/VnTable.vue';
import RightMenu from 'src/components/common/RightMenu.vue';
import { toDate } from 'src/filters';
@@ -12,7 +11,6 @@ import EntrySummary from './Card/EntrySummary.vue';
import SupplierDescriptorProxy from 'src/pages/Supplier/Card/SupplierDescriptorProxy.vue';
import TravelDescriptorProxy from 'src/pages/Travel/Card/TravelDescriptorProxy.vue';
-const stateStore = useStateStore();
const { t } = useI18n();
const tableRef = ref();
diff --git a/src/pages/Entry/EntryStockBoughtFilter.vue b/src/pages/Entry/EntryStockBoughtFilter.vue
index e59332064..136881f17 100644
--- a/src/pages/Entry/EntryStockBoughtFilter.vue
+++ b/src/pages/Entry/EntryStockBoughtFilter.vue
@@ -65,6 +65,6 @@ onMounted(async () => {
es:
Date: Fecha
params:
- dated: Date
+ dated: Fecha
workerFk: Trabajador
diff --git a/src/pages/InvoiceIn/Card/InvoiceInIntrastat.vue b/src/pages/InvoiceIn/Card/InvoiceInIntrastat.vue
index 1c4091169..e529ea6cd 100644
--- a/src/pages/InvoiceIn/Card/InvoiceInIntrastat.vue
+++ b/src/pages/InvoiceIn/Card/InvoiceInIntrastat.vue
@@ -161,7 +161,7 @@ const columns = computed(() => [
[
columnField: { component: null },
format: (row) => toDate(row.dued),
},
+ {
+ align: 'left',
+ name: 'customsAgentFk',
+ label: t('invoiceOutList.tableVisibleColumns.customsAgent'),
+ cardVisible: true,
+ format: (row, dashIfEmpty) => dashIfEmpty(row.customsAgentName),
+ },
{
align: 'right',
name: 'tableActions',
@@ -346,7 +353,7 @@ watchEffect(selectedRows);
-
+
{
switch (param) {
@@ -49,10 +40,6 @@ const where = {
itemFk: route.params.id,
};
-if (hideInventory.value) {
- where.supplierFk = { neq: inventorySupplierFk };
-}
-
const arrayData = useArrayData('ItemLastEntries', {
url: 'Items/lastEntriesFilter',
order: ['landed DESC', 'buyFk DESC'],
@@ -110,7 +97,7 @@ const columns = computed(() => [
format: (val) => dashIfEmpty(val),
},
{
- label: t('shelvings.packing'),
+ label: 'Packing',
name: 'packing',
field: 'packing',
align: 'center',
@@ -182,15 +169,11 @@ const updateFilter = async () => {
const userFilter = arrayData.store.userFilter.where;
userFilter.landed = filter;
- if (hideInventory.value) userFilter.supplierFk = { neq: inventorySupplierFk };
- else delete userFilter.supplierFk;
await fetchItemLastEntries();
};
onMounted(async () => {
- await getInventorySupplier();
-
const _from = Date.vnNew();
_from.setDate(_from.getDate() - 75);
from.value = getDate(_from, 'from');
@@ -200,12 +183,16 @@ onMounted(async () => {
updateFilter();
- watch([from, to, hideInventory], ([nFrom, nTo], [oFrom, oTo]) => {
+ watch([from, to], ([nFrom, nTo], [oFrom, oTo]) => {
if (nFrom && nFrom != oFrom) nFrom = getDate(new Date(nFrom), 'from');
if (nTo && nTo != oTo) nTo = getDate(new Date(nTo), 'to');
updateFilter();
});
});
+
+function getBadgeClass(groupingMode, expectedGrouping) {
+ return groupingMode === expectedGrouping ? 'accent-badge' : 'simple-badge';
+}
@@ -224,13 +211,6 @@ onMounted(async () => {
class="q-mr-lg"
data-cy="to"
/>
-
@@ -249,6 +229,11 @@ onMounted(async () => {
/>
+
+
+ {{ row.warehouse }}
+
+
@@ -262,32 +247,37 @@ onMounted(async () => {
+
+
+ {{ value }}
+ {{ t('lastEntries.grouping') }}/Packing
+
+
+
+
+ {{ row.printedStickers }}
+
+
{{ dashIfEmpty(row.packing) }}
- {{ t('lastEntries.packing') }}
+ Packing
-
-
- {{ value }}
-
- {{ t('lastEntries.grouping') }}/{{ t('lastEntries.packing') }}
-
-
{{ dashIfEmpty(row.grouping) }}
{{ t('lastEntries.grouping') }}
@@ -315,13 +305,16 @@ onMounted(async () => {
-
-
+
- {{ row.supplier }}
+ >
+
+ {{ row.supplier }}
+
@@ -349,4 +342,13 @@ onMounted(async () => {
background-color: red;
}
}
+.accent-badge {
+ background-color: var(--vn-label-color);
+ color: var(--vn-text-color-contrast);
+}
+.simple-badge {
+ background-color: transparent;
+ color: var(--vn-text-color);
+ font-size: 14px;
+}
diff --git a/src/pages/Item/Card/ItemTags.vue b/src/pages/Item/Card/ItemTags.vue
index 0cdd0f4e0..992b1042b 100644
--- a/src/pages/Item/Card/ItemTags.vue
+++ b/src/pages/Item/Card/ItemTags.vue
@@ -128,7 +128,7 @@ const submitTags = async (data) => {
[
name: 'itemFk',
...defaultColumnAttrs,
isId: true,
- cardVisible: true,
columnField: {
component: 'input',
type: 'number',
@@ -65,14 +64,12 @@ const columns = computed(() => [
name: 'name',
...defaultColumnAttrs,
create: true,
- cardVisible: true,
},
{
label: t('item.fixedPrice.groupingPrice'),
field: 'rate2',
name: 'rate2',
...defaultColumnAttrs,
- cardVisible: true,
component: 'input',
type: 'number',
},
@@ -81,7 +78,6 @@ const columns = computed(() => [
field: 'rate3',
name: 'rate3',
...defaultColumnAttrs,
- cardVisible: true,
component: 'input',
type: 'number',
},
@@ -91,7 +87,6 @@ const columns = computed(() => [
field: 'minPrice',
name: 'minPrice',
...defaultColumnAttrs,
- cardVisible: true,
component: 'input',
type: 'number',
},
@@ -100,7 +95,6 @@ const columns = computed(() => [
field: 'started',
name: 'started',
format: ({ started }) => toDate(started),
- cardVisible: true,
...defaultColumnAttrs,
columnField: {
component: 'date',
@@ -116,7 +110,6 @@ const columns = computed(() => [
field: 'ended',
name: 'ended',
...defaultColumnAttrs,
- cardVisible: true,
columnField: {
component: 'date',
class: 'shrink',
@@ -251,11 +244,14 @@ const upsertPrice = async (props, resetMinPrice = false) => {
}
if (!changes.updates && !changes.creates) return;
const data = await upsertFixedPrice(row);
- tableRef.value.CrudModelRef.formData[props.rowIndex] = data;
+ Object.assign(tableRef.value.CrudModelRef.formData[props.rowIndex], data);
+ notify(t('globals.dataSaved'), 'positive');
+ tableRef.value.reload();
};
async function upsertFixedPrice(row) {
const { data } = await axios.patch('FixedPrices/upsertFixedPrice', row);
+ data.hasMinPrice = data.hasMinPrice ? 1 : 0;
return data;
}
@@ -395,18 +391,12 @@ function handleOnDataSave({ CrudModelRef }) {
- data.forEach((item) => {
- item.hasMinPrice = `${item.hasMinPrice !== 0}`;
- })
- "
:default-remove="false"
:default-reset="false"
:default-save="false"
data-key="ItemFixedPrices"
url="FixedPrices/filter"
- :order="['itemFk DESC', 'name DESC']"
+ :order="['name DESC', 'itemFk DESC']"
save-url="FixedPrices/crud"
ref="tableRef"
dense
@@ -498,14 +488,15 @@ function handleOnDataSave({ CrudModelRef }) {
diff --git a/src/pages/Item/ItemList.vue b/src/pages/Item/ItemList.vue
index b531dcb41..aaec6335b 100644
--- a/src/pages/Item/ItemList.vue
+++ b/src/pages/Item/ItemList.vue
@@ -478,6 +478,8 @@ const columns = computed(() => [
es:
New item: Nuevo artículo
+ Create Item: Crear artículo
+ You can search by id: Puedes buscar por id
Preview: Vista previa
Regularize stock: Regularizar stock
diff --git a/src/pages/Item/ItemRequestFilter.vue b/src/pages/Item/ItemRequestFilter.vue
index 4e8ae0d42..f23cadcad 100644
--- a/src/pages/Item/ItemRequestFilter.vue
+++ b/src/pages/Item/ItemRequestFilter.vue
@@ -201,6 +201,7 @@ en:
to: To
mine: For me
state: State
+ daysOnward: Days onward
myTeam: My team
dateFiltersTooltip: Cannot choose a range of dates and days onward at the same time
denied: Denied
@@ -218,6 +219,7 @@ es:
to: Hasta
mine: Para mi
state: Estado
+ daysOnward: Días en adelante
myTeam: Mi equipo
dateFiltersTooltip: No se puede seleccionar un rango de fechas y días en adelante a la vez
denied: Denegada
diff --git a/src/pages/Order/Card/OrderCatalogItemDialog.vue b/src/pages/Order/Card/OrderCatalogItemDialog.vue
index 0d55b7de1..163b036eb 100644
--- a/src/pages/Order/Card/OrderCatalogItemDialog.vue
+++ b/src/pages/Order/Card/OrderCatalogItemDialog.vue
@@ -1,6 +1,6 @@
+ (validAddresses = data)"
+ />
@@ -153,6 +206,9 @@ const handleClone = (id) => {
redirect="zone"
:right-search="false"
>
+
+ {{ showValidAddresses(row) }}
+
{
navigate: null,
page: 1,
mapKey: 'id',
+ keepData: false,
};
function get(key) {
diff --git a/test/cypress/integration/Order/orderCatalog.spec.js b/test/cypress/integration/Order/orderCatalog.spec.js
index 45eda6f1f..88ec33025 100644
--- a/test/cypress/integration/Order/orderCatalog.spec.js
+++ b/test/cypress/integration/Order/orderCatalog.spec.js
@@ -11,21 +11,6 @@ describe('OrderCatalog', () => {
cy.dataCy('catalogFilterCustomTag').contains(filterName);
};
- const checkFilterTag = (filterName = 'Plant') => {
- cy.dataCy('vnFilterPanelChip').should('exist');
- cy.dataCy('vnFilterPanelChip').contains(filterName);
- };
-
- const selectCategory = (categoryIndex = 1, categoryName = 'Plant') => {
- cy.get(
- `div.q-page-container div:nth-of-type(${categoryIndex}) > [data-cy='catalogFilterCategory']`
- ).should('exist');
- cy.get(
- `div.q-page-container div:nth-of-type(${categoryIndex}) > [data-cy='catalogFilterCategory']`
- ).click();
- checkCustomFilterTag(categoryName);
- };
-
const searchByCustomTagInput = (option) => {
cy.dataCy('catalogFilterValueInput').find('input').last().focus();
cy.dataCy('catalogFilterValueInput').find('input').last().type(option);
@@ -33,31 +18,19 @@ describe('OrderCatalog', () => {
checkCustomFilterTag(option);
};
- const selectTypeFilter = (option) => {
- cy.selectOption(
- 'div.q-page-container div.list > div:nth-of-type(2) div:nth-of-type(3)',
- option
- );
- checkFilterTag(option);
- };
-
it('Shows empty state', () => {
cy.dataCy('orderCatalogPage').should('exist');
cy.dataCy('orderCatalogPage').contains('No data to display');
});
- it('filter by category', () => {
- selectCategory();
+ it('filter by category and type', () => {
+ cy.get(':nth-child(1) > [data-cy="catalogFilterCategory"]').click();
+ cy.selectOption('[data-cy="catalogFilterType"]', 'Anthurium');
cy.dataCy('orderCatalogItem').should('exist');
});
- it('filters by type', () => {
- selectCategory();
- selectTypeFilter('Anthurium');
- });
-
it('filters by custom value select', () => {
- selectCategory();
+ cy.get(':nth-child(1) > [data-cy="catalogFilterCategory"]').click();
searchByCustomTagInput('Silver');
});
@@ -67,10 +40,12 @@ describe('OrderCatalog', () => {
return false;
}
});
- selectCategory();
- cy.dataCy('catalogFilterValueDialogBtn').should('exist');
+ cy.get(
+ '[data-cy="vnSearchBar"] > .q-field > .q-field__inner > .q-field__control'
+ ).type('{enter}');
+ cy.get(':nth-child(1) > [data-cy="catalogFilterCategory"]').click();
cy.dataCy('catalogFilterValueDialogBtn').last().click();
- cy.dataCy('catalogFilterValueDialogTagSelect').should('exist');
+ cy.get('[data-cy="catalogFilterValueDialogTagSelect"]').click();
cy.selectOption("[data-cy='catalogFilterValueDialogTagSelect']", 'Tallos');
cy.dataCy('catalogFilterValueDialogValueInput').find('input').focus();
cy.dataCy('catalogFilterValueDialogValueInput').find('input').type('2');
@@ -79,34 +54,16 @@ describe('OrderCatalog', () => {
});
it('removes a secondary tag', () => {
- selectCategory();
- selectTypeFilter('Anthurium');
+ cy.get(':nth-child(1) > [data-cy="catalogFilterCategory"]').click();
+ cy.selectOption('[data-cy="catalogFilterType"]', 'Anthurium');
cy.dataCy('vnFilterPanelChip').should('exist');
- cy.get(
- "div.q-page-container [data-cy='vnFilterPanelChip'] > i.q-chip__icon--remove"
- )
- .contains('cancel')
- .should('exist');
- cy.get(
- "div.q-page-container [data-cy='vnFilterPanelChip'] > i.q-chip__icon--remove"
- )
- .contains('cancel')
- .click();
+ cy.get('[data-cy="catalogFilterCustomTag"] > .q-chip__icon--remove').click();
cy.dataCy('vnFilterPanelChip').should('not.exist');
});
it('Removes category tag', () => {
- selectCategory();
- cy.get(
- "div.q-page-container [data-cy='catalogFilterCustomTag'] > i.q-chip__icon--remove"
- )
- .contains('cancel')
- .should('exist');
- cy.get(
- "div.q-page-container [data-cy='catalogFilterCustomTag'] > i.q-chip__icon--remove"
- )
- .contains('cancel')
- .click();
+ cy.get(':nth-child(1) > [data-cy="catalogFilterCategory"]').click();
+ cy.get('.q-chip__icon--remove').click();
cy.dataCy('catalogFilterCustomTag').should('not.exist');
});
});
diff --git a/test/cypress/integration/client/clientList.spec.js b/test/cypress/integration/client/clientList.spec.js
index dcded63b0..d5723375b 100644
--- a/test/cypress/integration/client/clientList.spec.js
+++ b/test/cypress/integration/client/clientList.spec.js
@@ -15,7 +15,7 @@ describe('Client list', () => {
});
});
- it('Client list create new client', () => {
+ it.skip('Client list create new client', () => {
cy.addBtnClick();
const randomInt = Math.floor(Math.random() * 90) + 10;
diff --git a/test/cypress/integration/item/ItemFixedPrice.spec.js b/test/cypress/integration/item/ItemFixedPrice.spec.js
index e026993e9..edb6a63fe 100644
--- a/test/cypress/integration/item/ItemFixedPrice.spec.js
+++ b/test/cypress/integration/item/ItemFixedPrice.spec.js
@@ -52,7 +52,7 @@ describe('Handle Items FixedPrice', () => {
cy.get('.q-mt-lg > .q-btn--standard').click();
cy.get('.q-notification__message').should('have.text', 'Data saved');
});
- it('Massive remove', function () {
+ it.skip('Massive remove', function () {
cy.get(' .bg-header > :nth-child(1) > .q-checkbox > .q-checkbox__inner ').click();
cy.get('#subToolbar > .q-btn--flat').click();
cy.get(
diff --git a/test/cypress/integration/item/itemLastEntries.spec.js b/test/cypress/integration/item/itemLastEntries.spec.js
deleted file mode 100644
index c94cfa480..000000000
--- a/test/cypress/integration/item/itemLastEntries.spec.js
+++ /dev/null
@@ -1,20 +0,0 @@
-describe('ItemLastEntries', () => {
- beforeEach(() => {
- cy.viewport(1280, 720);
- cy.login('buyer');
- cy.visit('/#/item/1/last-entries');
- cy.intercept('GET', /.*lastEntriesFilter/).as('item');
- cy.waitForElement('tbody');
- });
-
- it('should filter by agency', () => {
- cy.get('tbody > tr')
- .its('length')
- .then((rowCount) => {
- cy.get('[data-cy="hideInventory"]').click();
- cy.wait('@item');
- cy.waitForElement('tbody');
- cy.get('tbody > tr').should('have.length.greaterThan', rowCount);
- });
- });
-});
diff --git a/test/cypress/integration/ticket/ticketExpedition.spec.js b/test/cypress/integration/ticket/ticketExpedition.spec.js
index d4afd401f..d74a122a1 100644
--- a/test/cypress/integration/ticket/ticketExpedition.spec.js
+++ b/test/cypress/integration/ticket/ticketExpedition.spec.js
@@ -16,7 +16,9 @@ describe('Ticket expedtion', () => {
cy.wait('@show');
cy.selectRows([1, 2]);
- cy.selectOption('[data-cy="change-state"]', 'Perdida');
+
+ cy.dataCy('change-state').click();
+ cy.selectOption('[data-cy="vnBtnSelect_select"]', 'Perdida');
cy.wait('@add');
cy.get(`${tableContent} tr:nth-child(-n+2) ${stateTd}`).each(($el) => {
diff --git a/test/cypress/integration/ticket/ticketList.spec.js b/test/cypress/integration/ticket/ticketList.spec.js
index b30b4cdad..fa5f46de7 100644
--- a/test/cypress/integration/ticket/ticketList.spec.js
+++ b/test/cypress/integration/ticket/ticketList.spec.js
@@ -37,7 +37,7 @@ describe('TicketList', () => {
cy.dataCy('ticketSummary').should('exist');
});
- it('Client list create new client', () => {
+ it.skip('Client list create new client', () => {
cy.dataCy('vnTableCreateBtn').should('exist');
cy.dataCy('vnTableCreateBtn').click();
const data = {
diff --git a/test/cypress/integration/ticket/ticketRequest.spec.js b/test/cypress/integration/ticket/ticketRequest.spec.js
index b9dc509ef..5a0ae636f 100644
--- a/test/cypress/integration/ticket/ticketRequest.spec.js
+++ b/test/cypress/integration/ticket/ticketRequest.spec.js
@@ -6,7 +6,7 @@ describe('TicketRequest', () => {
cy.visit('/#/ticket/31/request');
});
- it('Creates a new request', () => {
+ it.skip('Creates a new request', () => {
cy.dataCy('vnTableCreateBtn').should('exist');
cy.dataCy('vnTableCreateBtn').click();
const data = {
diff --git a/test/cypress/integration/ticket/ticketSale.spec.js b/test/cypress/integration/ticket/ticketSale.spec.js
index 60f31dbf6..7bc53f010 100644
--- a/test/cypress/integration/ticket/ticketSale.spec.js
+++ b/test/cypress/integration/ticket/ticketSale.spec.js
@@ -66,7 +66,7 @@ describe('TicketSale', () => {
cy.dataCy('ticketSaleMoreActionsDropdown').click();
cy.dataCy('createClaimItem').click();
cy.dataCy('VnConfirm_confirm').click();
- cy.url().should('match', /\/claim\/\d+\/basic-data/);
+ cy.url().should('contain', 'claim/');
// Delete created claim to avoid cluttering the database
cy.dataCy('descriptor-more-opts').click();
cy.dataCy('deleteClaim').click();
@@ -106,22 +106,15 @@ describe('TicketSale', () => {
cy.checkNotification('The following refund ticket have been created');
});
- it('transfers ticket', () => {
+ it('transfer sale to a new ticket', () => {
cy.visit('/#/ticket/32/sale');
+ cy.get('.q-item > .q-item__label').should('have.text', ' #32');
selectFirstRow();
cy.dataCy('ticketSaleTransferBtn').click();
cy.dataCy('ticketTransferPopup').should('exist');
cy.dataCy('ticketTransferNewTicketBtn').click();
- // existen 3 elementos "tbody" necesito checkear que el segundo elemento tbody tenga una row sola
- cy.get('tbody').eq(1).find('tr').should('have.length', 1);
- selectFirstRow();
- cy.dataCy('ticketSaleTransferBtn').click();
- cy.dataCy('ticketTransferPopup').should('exist');
- cy.dataCy('ticketTransferDestinationTicketInput').find('input').focus();
- cy.dataCy('ticketTransferDestinationTicketInput').find('input').type('32');
- cy.dataCy('ticketTransferTransferBtn').click();
- // checkear que la url contenga /ticket/1000002/sale
- cy.url().should('match', /\/ticket\/32\/sale/);
+ //check the new ticket has been created succesfully
+ cy.get('.q-item > .q-item__label').should('not.have.text', ' #32');
});
it('should redirect to ticket logs', () => {
diff --git a/test/cypress/integration/vnComponent/VnLocation.spec.js b/test/cypress/integration/vnComponent/VnLocation.spec.js
index 82d12a1e4..14eb0f978 100644
--- a/test/cypress/integration/vnComponent/VnLocation.spec.js
+++ b/test/cypress/integration/vnComponent/VnLocation.spec.js
@@ -38,10 +38,7 @@ describe('VnLocation', () => {
const province = 'Province five';
cy.selectOption(countrySelector, country);
- cy.selectOption(
- `${createForm.prefix} > :nth-child(4) > .q-select > ${createForm.sufix}`,
- province
- );
+ cy.dataCy('locationProvince').type(`${province}{enter}`);
cy.get(
`${createForm.prefix} > :nth-child(4) > .q-select > ${createForm.sufix} > :nth-child(3) `
).click();
@@ -134,13 +131,9 @@ describe('VnLocation', () => {
it('Create city with country', () => {
const cityName = 'Saskatchew'.concat(Math.random(1 * 100));
cy.get(createLocationButton).click();
- cy.selectOption(
- `${createForm.prefix} > :nth-child(5) > :nth-child(3) `,
- 'Italia'
- );
+ cy.dataCy('locationCountry').type('Italia{enter}');
cy.dataCy('City_icon').click();
cy.selectOption('[data-cy="locationProvince"]:last', 'Province four');
- cy.countSelectOptions('[data-cy="locationProvince"]:last', 1);
cy.dataCy('cityName').type(cityName);
cy.dataCy('FormModelPopup_save').eq(1).click();
diff --git a/test/cypress/integration/vnComponent/VnLog.spec.js b/test/cypress/integration/vnComponent/VnLog.spec.js
index 80b9d07df..10917859a 100644
--- a/test/cypress/integration/vnComponent/VnLog.spec.js
+++ b/test/cypress/integration/vnComponent/VnLog.spec.js
@@ -10,14 +10,14 @@ describe('VnLog', () => {
cy.openRightMenu();
});
- it('should filter by insert actions', () => {
+ it.skip('should filter by insert actions', () => {
cy.checkOption(':nth-child(7) > .q-checkbox');
cy.get('.q-page').click();
cy.validateContent(chips[0], 'Document');
cy.validateContent(chips[1], 'Beginning');
});
- it('should filter by entity', () => {
+ it.skip('should filter by entity', () => {
cy.selectOption('.q-drawer--right .q-item > .q-select', 'Claim');
cy.get('.q-page').click();
cy.validateContent(chips[0], 'Claim');
diff --git a/test/cypress/integration/wagon/wagonCreate.spec.js b/test/cypress/integration/wagon/wagonCreate.spec.js
index cd248d1bb..501375d8c 100644
--- a/test/cypress/integration/wagon/wagonCreate.spec.js
+++ b/test/cypress/integration/wagon/wagonCreate.spec.js
@@ -2,41 +2,22 @@ describe('WagonCreate', () => {
beforeEach(() => {
cy.viewport(1280, 720);
cy.login('developer');
- cy.visit('/#/wagon/create');
+ cy.visit('/#/wagon');
});
it('should create and delete a new wagon', () => {
- cy.waitForElement('.q-card');
- cy.get('input').eq(0).type('1234');
- cy.get('input').eq(1).type('1234ABCD');
- cy.get('input').eq(2).type('100');
- cy.get('input').eq(3).click();
- cy.get('.q-select > .q-field__inner > .q-field__control').type(
- '{downarrow}{enter}'
- );
-
- // Save
- cy.get('button[type="submit"]').click();
-
- // Check data has been saved successfully
- cy.waitForElement('.q-card');
-
+ cy.dataCy('vnTableCreateBtn').click();
cy.get(
- '[to="/null/1"] > .q-card > .no-padding > .q-py-none > .cursor-text'
- ).should('have.text', '1234');
+ '.grid-create > [label="Label"] > .q-field > .q-field__inner > .q-field__control > .q-field__control-container > [data-cy="Label_input"]'
+ ).type('1234');
cy.get(
- '[to="/null/1"] > .q-card > .no-padding > .q-pr-lg > :nth-child(1) > .vn-label-value > .value > :nth-child(1) > .row > span'
- ).should('have.text', '1234ABCD');
+ '.grid-create > [label="Plate"] > .q-field > .q-field__inner > .q-field__control > .q-field__control-container > [data-cy="Plate_input"]'
+ ).type('1234ABCD');
cy.get(
- '[to="/null/1"] > .q-card > .no-padding > .q-pr-lg > :nth-child(2) > .vn-label-value > .value > :nth-child(1) > .row > span'
- ).should('have.text', '100');
- cy.get(
- '[to="/null/1"] > .q-card > .no-padding > .q-pr-lg > :nth-child(3) > .vn-label-value > .value > :nth-child(1) > .row > span'
- ).should('have.text', 'Wagon Type #1');
-
- // Delete wagon type created
- cy.get(
- '[to="/null/2"] > .q-card > .column > [title="Remove"] > .q-btn__content > .q-icon'
- ).click();
+ '.grid-create > [label="Volume"] > .q-field > .q-field__inner > .q-field__control > .q-field__control-container > [data-cy="Volume_input"]'
+ ).type('100');
+ cy.dataCy('Type_select').type('{downarrow}{enter}');
+ // // Delete wagon type created
+ cy.get('[to="/null/1"] > .q-card > .column > [title="Remove"]').click();
});
});
diff --git a/test/cypress/support/commands.js b/test/cypress/support/commands.js
index 9acc08c5d..f698bfd6f 100755
--- a/test/cypress/support/commands.js
+++ b/test/cypress/support/commands.js
@@ -101,7 +101,6 @@ Cypress.Commands.add('selectOption', (selector, option, timeout = 5000) => {
.then(() => {
cy.get('@dataUrl').then((url) => {
if (url) {
- cy.log('url: ', url);
// Esperar a que el menú no esté visible (desaparezca)
cy.get('.q-menu').should('not.be.visible');
// Ahora esperar a que el menú vuelva a aparecer