diff --git a/package.json b/package.json
index 19b4c7a6f..b7b04287d 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
     "name": "salix-front",
-    "version": "25.16.0",
+    "version": "25.18.0",
     "description": "Salix frontend",
     "productName": "Salix",
     "author": "Verdnatura",
@@ -89,4 +89,4 @@
         "vite": "^6.0.11",
         "vitest": "^0.31.1"
     }
-}
+}
\ No newline at end of file
diff --git a/src/components/common/VnInputBic.vue b/src/components/common/VnInputBic.vue
index 5f0afd083..b29644912 100644
--- a/src/components/common/VnInputBic.vue
+++ b/src/components/common/VnInputBic.vue
@@ -20,12 +20,12 @@ const autofillBic = async (iban) => {
 
     if (ibanCountry != 'ES') return;
 
-    const filter = { where: { id: bankEntityId.value } };
+    const filter = { where: { id: bankEntityId } };
     const params = { filter: JSON.stringify(filter) };
 
     const { data } = await axios.get(`BankEntities`, { params });
 
-    emit('updateBic', data[0].id);
+    emit('updateBic', data[0]?.id);
 };
 </script>
 <template>
diff --git a/src/components/common/VnLog.vue b/src/components/common/VnLog.vue
index e2f18866a..7020c8489 100644
--- a/src/components/common/VnLog.vue
+++ b/src/components/common/VnLog.vue
@@ -68,7 +68,6 @@ const filter = {
             },
         },
     ],
-    where: { and: [{ originFk: route.params.id }] },
 };
 
 const paginate = ref();
@@ -267,13 +266,6 @@ onMounted(() => {
 onUnmounted(() => {
     stateStore.rightDrawer = false;
 });
-
-watch(
-    () => router.currentRoute.value.params.id,
-    () => {
-        applyFilter();
-    },
-);
 </script>
 <template>
     <VnPaginate
@@ -281,6 +273,7 @@ watch(
         :data-key
         :url="dataKey + 's'"
         :user-filter="filter"
+        :filter="{ where: { and: [{ originFk: route.params.id }] } }"
         :skeleton="false"
         auto-load
         @on-fetch="setLogTree"
diff --git a/src/components/common/VnLogFilter.vue b/src/components/common/VnLogFilter.vue
index c7be68e9e..606da0182 100644
--- a/src/components/common/VnLogFilter.vue
+++ b/src/components/common/VnLogFilter.vue
@@ -39,7 +39,7 @@ const checkboxOptions = ref([
     { name: 'select', label: 'Accesses', selected: false },
 ]);
 const columns = computed(() => [
-    { name: 'changedModelValue' },
+    { name: 'changedModelValue', orderBy: 'id' },
     { name: 'changedModel' },
     { name: 'userType', orderBy: false },
     { name: 'userFk' },
diff --git a/src/components/ui/VnLv.vue b/src/components/ui/VnLv.vue
index aa7342742..4c5a429f4 100644
--- a/src/components/ui/VnLv.vue
+++ b/src/components/ui/VnLv.vue
@@ -6,6 +6,7 @@ import { computed } from 'vue';
 
 const $props = defineProps({
     label: { type: String, default: null },
+    tooltip: { type: String, default: null },
     value: {
         type: [String, Boolean, Number],
         default: null,
@@ -40,7 +41,10 @@ const val = computed(() => $props.value);
         <template v-else>
             <div v-if="label || $slots.label" class="label">
                 <slot name="label">
-                    <span style="color: var(--vn-label-color)">{{ label }}</span>
+                    <QTooltip v-if="tooltip">{{ tooltip }}</QTooltip>
+                    <span style="color: var(--vn-label-color)">
+                        {{ label }}
+                    </span>
                 </slot>
             </div>
             <div class="value" v-if="value || $slots.value">
diff --git a/src/components/ui/VnUsesMana.vue b/src/components/ui/VnUsesMana.vue
deleted file mode 100644
index cb066b235..000000000
--- a/src/components/ui/VnUsesMana.vue
+++ /dev/null
@@ -1,60 +0,0 @@
-<script setup>
-import { ref } from 'vue';
-import { useI18n } from 'vue-i18n';
-
-const { t } = useI18n();
-const props = defineProps({
-    usesMana: {
-        type: Boolean,
-        required: true,
-    },
-    manaCode: {
-        type: String,
-        required: true,
-    },
-    manaVal: {
-        type: String,
-        default: 'mana',
-    },
-    manaLabel: {
-        type: String,
-        default: 'Promotion mana',
-    },
-    manaClaimVal: {
-        type: String,
-        default: 'manaClaim',
-    },
-    claimLabel: {
-        type: String,
-        default: 'Claim mana',
-    },
-});
-
-const manaCode = ref(props.manaCode);
-</script>
-
-<template>
-    <div class="column q-gutter-y-sm q-mt-sm">
-        <QRadio
-            v-model="manaCode"
-            dense
-            :val="manaVal"
-            :label="t(manaLabel)"
-            :dark="true"
-            class="q-mb-sm"
-        />
-        <QRadio
-            v-model="manaCode"
-            dense
-            :val="manaClaimVal"
-            :label="t(claimLabel)"
-            :dark="true"
-            class="q-mb-sm"
-        />
-    </div>
-</template>
-<i18n>
-    es:
-        Promotion mana: Maná promoción
-        Claim mana: Maná reclamación
-</i18n>
diff --git a/src/css/quasar.variables.scss b/src/css/quasar.variables.scss
index 45d18af7e..c443c5826 100644
--- a/src/css/quasar.variables.scss
+++ b/src/css/quasar.variables.scss
@@ -18,6 +18,7 @@ $positive: #c8e484;
 $negative: #fb5252;
 $info: #84d0e2;
 $warning: #f4b974;
+$neutral: #b0b0b0;
 // Pendiente de cuadrar con la base de datos
 $success: $positive;
 $alert: $negative;
@@ -51,3 +52,6 @@ $width-xl: 1600px;
 .bg-alert {
     background-color: $negative;
 }
+.bg-neutral {
+    background-color: $neutral;
+}
diff --git a/src/pages/Claim/Card/ClaimDescriptor.vue b/src/pages/Claim/Card/ClaimDescriptor.vue
index 76ede81ed..3728a18c0 100644
--- a/src/pages/Claim/Card/ClaimDescriptor.vue
+++ b/src/pages/Claim/Card/ClaimDescriptor.vue
@@ -28,14 +28,8 @@ const entityId = computed(() => {
     return $props.id || route.params.id;
 });
 
-const STATE_COLOR = {
-    pending: 'warning',
-    incomplete: 'info',
-    resolved: 'positive',
-    canceled: 'negative',
-};
-function stateColor(code) {
-    return STATE_COLOR[code];
+function stateColor(entity) {
+    return entity?.claimState?.classColor;
 }
 
 onMounted(async () => {
@@ -57,9 +51,8 @@ onMounted(async () => {
             <VnLv v-if="entity.claimState" :label="t('claim.state')">
                 <template #value>
                     <QBadge
-                        :color="stateColor(entity.claimState.code)"
-                        text-color="black"
-                        dense
+                        :color="stateColor(entity)"
+                        style="color: var(--vn-black-text-color)"
                     >
                         {{ entity.claimState.description }}
                     </QBadge>
diff --git a/src/pages/Claim/Card/ClaimSummary.vue b/src/pages/Claim/Card/ClaimSummary.vue
index 67d57004f..51975cc2e 100644
--- a/src/pages/Claim/Card/ClaimSummary.vue
+++ b/src/pages/Claim/Card/ClaimSummary.vue
@@ -108,15 +108,9 @@ const markerLabels = [
     { value: 5, label: t('claim.person') },
 ];
 
-const STATE_COLOR = {
-    pending: 'warning',
-    incomplete: 'info',
-    resolved: 'positive',
-    canceled: 'negative',
-};
-
 function stateColor(code) {
-    return STATE_COLOR[code];
+    const claimState = claimStates.value.find((state) => state.code === code);
+    return claimState?.classColor;
 }
 
 const developmentColumns = ref([
@@ -188,7 +182,7 @@ function claimUrl(section) {
 <template>
     <FetchData
         url="ClaimStates"
-        :filter="{ fields: ['id', 'description'] }"
+        :filter="{ fields: ['id', 'description', 'code', 'classColor'] }"
         @on-fetch="(data) => (claimStates = data)"
         auto-load
     />
@@ -346,17 +340,18 @@ function claimUrl(section) {
                     <template #body="props">
                         <QTr :props="props">
                             <QTd v-for="col in props.cols" :key="col.name" :props="props">
-                                <span v-if="col.name != 'description'">{{
-                                    t(col.value)
-                                }}</span>
-                                <span class="link" v-if="col.name === 'description'">{{
-                                    t(col.value)
-                                }}</span>
-                                <ItemDescriptorProxy
-                                    v-if="col.name == 'description'"
-                                    :id="props.row.sale.itemFk"
-                                    :sale-fk="props.row.saleFk"
-                                ></ItemDescriptorProxy>
+                                <template v-if="col.name === 'description'">
+                                    <span class="link">{{
+                                        dashIfEmpty(col.field(props.row))
+                                    }}</span>
+                                    <ItemDescriptorProxy
+                                        :id="props.row.sale.itemFk"
+                                        :sale-fk="props.row.saleFk"
+                                    />
+                                </template>
+                                <template v-else>
+                                    {{ dashIfEmpty(col.field(props.row)) }}
+                                </template>
                             </QTd>
                         </QTr>
                     </template>
diff --git a/src/pages/Claim/ClaimList.vue b/src/pages/Claim/ClaimList.vue
index e0d9928f9..d6a77bafe 100644
--- a/src/pages/Claim/ClaimList.vue
+++ b/src/pages/Claim/ClaimList.vue
@@ -101,7 +101,10 @@ const columns = computed(() => [
         name: 'stateCode',
         chip: {
             condition: () => true,
-            color: ({ stateCode }) => STATE_COLOR[stateCode] ?? 'bg-grey',
+            color: ({ stateCode }) => {
+                const state = states.value?.find(({ code }) => code === stateCode);
+                return `bg-${state.classColor}`;
+            },
         },
         columnFilter: {
             name: 'claimStateFk',
@@ -131,12 +134,6 @@ const columns = computed(() => [
         ],
     },
 ]);
-
-const STATE_COLOR = {
-    pending: 'bg-warning',
-    loses: 'bg-negative',
-    resolved: 'bg-positive',
-};
 </script>
 
 <template>
diff --git a/src/pages/Customer/Card/CustomerBalance.vue b/src/pages/Customer/Card/CustomerBalance.vue
index 4855fadc0..13c337ab0 100644
--- a/src/pages/Customer/Card/CustomerBalance.vue
+++ b/src/pages/Customer/Card/CustomerBalance.vue
@@ -131,6 +131,7 @@ const columns = computed(() => [
         name: 'isConciliate',
         label: t('Conciliated'),
         cardVisible: true,
+        component: 'checkbox',
     },
     {
         align: 'left',
diff --git a/src/pages/Customer/Card/CustomerConsumption.vue b/src/pages/Customer/Card/CustomerConsumption.vue
index f3949bb32..db7236a3d 100644
--- a/src/pages/Customer/Card/CustomerConsumption.vue
+++ b/src/pages/Customer/Card/CustomerConsumption.vue
@@ -18,7 +18,7 @@ import ItemDescriptorProxy from 'src/pages/Item/Card/ItemDescriptorProxy.vue';
 import VnSelect from 'components/common/VnSelect.vue';
 import VnInputDate from 'components/common/VnInputDate.vue';
 
-const arrayData = useArrayData('Client');
+const arrayData = useArrayData('Customer');
 const { t } = useI18n();
 const route = useRoute();
 const campaignList = ref();
@@ -260,7 +260,7 @@ const updateDateParams = (value, params) => {
                     :label="t('globals.campaign')"
                     :filled="true"
                     class="q-px-sm q-pt-none fit"
-                    :option-label="(opt) => t(opt.code)"
+                    :option-label="(opt) => t(opt.code ?? '')"
                     :fields="['id', 'code', 'dated', 'scopeDays']"
                     @update:model-value="(data) => updateDateParams(data, params)"
                     dense
diff --git a/src/pages/Customer/Card/CustomerSamples.vue b/src/pages/Customer/Card/CustomerSamples.vue
index 19a7f8759..756ae4667 100644
--- a/src/pages/Customer/Card/CustomerSamples.vue
+++ b/src/pages/Customer/Card/CustomerSamples.vue
@@ -34,7 +34,7 @@ const columns = computed(() => [
     },
     {
         align: 'left',
-        format: (row) => row.type.description,
+        format: (row) => row?.type?.description,
         label: t('Description'),
         name: 'description',
     },
diff --git a/src/pages/Customer/Card/CustomerSummary.vue b/src/pages/Customer/Card/CustomerSummary.vue
index 9d30f0c6d..f19bb26ab 100644
--- a/src/pages/Customer/Card/CustomerSummary.vue
+++ b/src/pages/Customer/Card/CustomerSummary.vue
@@ -185,7 +185,7 @@ const sumRisk = ({ clientRisks }) => {
                 />
                 <VnLv
                     :label="t('customer.summary.payMethod')"
-                    :value="entity.payMethod.name"
+                    :value="entity.payMethod?.name"
                 />
                 <VnLv :label="t('customer.summary.bankAccount')" :value="entity.iban" />
                 <VnLv :label="t('customer.summary.dueDay')" :value="entity.dueDay" />
@@ -208,7 +208,8 @@ const sumRisk = ({ clientRisks }) => {
                     :text="t('customer.summary.consignee')"
                 />
                 <VnLv
-                    :label="t('customer.summary.addressName')"
+                    :tooltip="t('customer.summary.addressName')"
+                    :label="t('customer.summary.addressNameAbbr')"
                     :value="entity.defaultAddress.nickname"
                 />
                 <VnLv
@@ -252,7 +253,8 @@ const sumRisk = ({ clientRisks }) => {
                 />
                 <VnLv
                     v-if="entity.claimsRatio"
-                    :label="t('customer.summary.priceIncreasingRate')"
+                    :tooltip="t('customer.summary.priceIncreasingRate')"
+                    :label="t('customer.summary.priceIncreasingRateAbbr')"
                     :value="toPercentage(priceIncreasingRate)"
                 />
                 <VnLv
@@ -261,7 +263,8 @@ const sumRisk = ({ clientRisks }) => {
                 />
                 <VnLv
                     v-if="entity.claimsRatio"
-                    :label="t('customer.summary.claimRate')"
+                    :label="t('customer.summary.claimRateAbbr')"
+                    :tooltip="t('customer.summary.claimRate')"
                     :value="toPercentage(claimRate)"
                 />
             </QCard>
@@ -318,8 +321,9 @@ const sumRisk = ({ clientRisks }) => {
                 />
 
                 <VnLv
-                    :label="t('customer.summary.recommendCredit')"
-                    :value="entity.recommendedCredit"
+                    :label="t('customer.summary.recommendCreditAbbr')"
+                    :tooltip="t('customer.summary.recommendCredit')"
+                    :value="toCurrency(entity.recommendedCredit)"
                 />
             </QCard>
             <QCard class="vn-max">
diff --git a/src/pages/Customer/CustomerList.vue b/src/pages/Customer/CustomerList.vue
index b721a6ad9..f5e7485a2 100644
--- a/src/pages/Customer/CustomerList.vue
+++ b/src/pages/Customer/CustomerList.vue
@@ -111,14 +111,11 @@ const columns = computed(() => [
             component: 'number',
         },
         columnField: {
-            component: null,
-            after: {
-                component: markRaw(VnLinkPhone),
-                attrs: ({ model }) => {
-                    return {
-                        'phone-number': model,
-                    };
-                },
+            component: markRaw(VnLinkPhone),
+            attrs: ({ model }) => {
+                return {
+                    'phone-number': model,
+                };
             },
         },
     },
diff --git a/src/pages/Customer/locale/en.yml b/src/pages/Customer/locale/en.yml
index 6724a5a7b..fca3354e6 100644
--- a/src/pages/Customer/locale/en.yml
+++ b/src/pages/Customer/locale/en.yml
@@ -42,14 +42,17 @@ customer:
         hasCoreVnl: Has core VNL
         hasB2BVnl: Has B2B VNL
         addressName: Address name
+        addressNameAbbr: A. Name
         addressCity: City
         username: Username
         webAccess: Web access
         totalGreuge: Total greuge
         mana: Mana
         priceIncreasingRate: Price increasing rate
+        priceIncreasingRateAbbr: Price inc. rate
         averageInvoiced: Average invoiced
         claimRate: Claming rate
+        claimRateAbbr: Claim. rate
         payMethodFk: Billing data
         risk: Risk
         maximumRisk: Solunion's maximum risk
@@ -68,6 +71,7 @@ customer:
         descriptorInfo: Invoices minus payments plus orders not yet
         rating: Rating
         recommendCredit: Recommended credit
+        recommendCreditAbbr: Rec. credit
         goToLines: Go to lines
     basicData:
         socialName: Fiscal name
diff --git a/src/pages/Customer/locale/es.yml b/src/pages/Customer/locale/es.yml
index 4a266e07a..9b0009b36 100644
--- a/src/pages/Customer/locale/es.yml
+++ b/src/pages/Customer/locale/es.yml
@@ -42,14 +42,17 @@ customer:
         hasCoreVnl: Recibido core VNL
         hasB2BVnl: Recibido B2B VNL
         addressName: Nombre de la dirección
+        addressNameAbbr: N. Dirección
         addressCity: Ciudad
         username: Usuario
         webAccess: Acceso web
         totalGreuge: Greuge total
         mana: Maná
         priceIncreasingRate: Ratio de incremento de precio
+        priceIncreasingRateAbbr: R. Inc. Precio
         averageInvoiced: Facturación media
         claimRate: Ratio de reclamaciones
+        claimRateAbbr: R. Reclamaciones
         maximumRisk: Riesgo máximo asumido por Solunion
         payMethodFk: Forma de pago
         risk: Riesgo
@@ -68,6 +71,7 @@ customer:
         descriptorInfo: Facturas menos recibos mas pedidos sin facturar
         rating: Clasificación
         recommendCredit: Crédito recomendado
+        recommendCreditAbbr: Cr. Recomendado
         goToLines: Ir a líneas
     basicData:
         socialName: Nombre fiscal
diff --git a/src/pages/Route/RouteTickets.vue b/src/pages/Route/RouteTickets.vue
index 5e28bb689..1b9545905 100644
--- a/src/pages/Route/RouteTickets.vue
+++ b/src/pages/Route/RouteTickets.vue
@@ -141,7 +141,7 @@ const setOrderedPriority = async () => {
 };
 
 const sortRoutes = async () => {
-    await axios.patch(`Routes/${route.params?.id}/guessPriority/`);
+    await axios.patch(`Routes/${route.params?.id}/optimizePriority`);
     refreshKey.value++;
 };
 
diff --git a/src/pages/Ticket/Card/TicketEditMana.vue b/src/pages/Ticket/Card/TicketEditMana.vue
index 266c82ccd..f8a72caf3 100644
--- a/src/pages/Ticket/Card/TicketEditMana.vue
+++ b/src/pages/Ticket/Card/TicketEditMana.vue
@@ -4,7 +4,6 @@ import { useI18n } from 'vue-i18n';
 import { computed, ref } from 'vue';
 import { useRoute } from 'vue-router';
 import { toCurrency } from 'src/filters';
-import VnUsesMana from 'components/ui/VnUsesMana.vue';
 
 const $props = defineProps({
     newPrice: {
@@ -15,23 +14,36 @@ const $props = defineProps({
         type: Object,
         default: null,
     },
+    componentId: {
+        type: Number,
+        default: null,
+    },
 });
 
+const emit = defineEmits(['save', 'cancel', 'update:componentId']);
+
 const route = useRoute();
 const mana = ref(null);
-const usesMana = ref(false);
-
-const emit = defineEmits(['save', 'cancel']);
+const usesMana = ref([]);
 
 const { t } = useI18n();
 const QPopupProxyRef = ref(null);
-const manaCode = ref($props.manaCode);
+
+const componentId = computed({
+    get: () => $props.componentId,
+    set: (val) => emit('update:componentId', val),
+});
 
 const save = (sale = $props.sale) => {
     emit('save', sale);
     QPopupProxyRef.value.hide();
 };
 
+const cancel = () => {
+    emit('cancel');
+    QPopupProxyRef.value.hide();
+};
+
 const getMana = async () => {
     const { data } = await axios.get(`Tickets/${route.params.id}/getDepartmentMana`);
     mana.value = data;
@@ -39,15 +51,12 @@ const getMana = async () => {
 };
 
 const getUsesMana = async () => {
-    const { data } = await axios.get('Sales/usesMana');
+    const { data } = await axios.get('Sales/getComponents');
     usesMana.value = data;
 };
 
-const cancel = () => {
-    emit('cancel');
-    QPopupProxyRef.value.hide();
-};
 const hasMana = computed(() => typeof mana.value === 'number');
+
 defineExpose({ save });
 </script>
 
@@ -59,17 +68,29 @@ defineExpose({ save });
     >
         <div class="container">
             <div class="header">Mana: {{ toCurrency(mana) }}</div>
-            <QSpinner v-if="!hasMana" color="primary" size="md" />
+
+            <QSpinner v-if="!usesMana.length" color="primary" />
+
             <div class="q-pa-md" v-else>
                 <slot :popup="QPopupProxyRef" />
-                <div v-if="usesMana" class="column q-gutter-y-sm q-mt-sm">
-                    <VnUsesMana :mana-code="manaCode" />
+
+                <div v-if="usesMana.length" class="column q-gutter-y-sm q-mt-sm">
+                    <QRadio
+                        v-for="(item, index) in usesMana"
+                        :key="index"
+                        v-model="componentId"
+                        :val="item.id"
+                        :label="item.name"
+                        dense
+                        :dark="true"
+                        class="q-mb-sm"
+                        :data-cy="`componentOption-${item.id}`"
+                    />
                 </div>
+
                 <div v-if="newPrice" class="column items-center q-mt-lg">
                     <span class="text-primary">{{ t('New price') }}</span>
-                    <span class="text-subtitle1">
-                        {{ toCurrency($props.newPrice) }}
-                    </span>
+                    <span class="text-subtitle1">{{ toCurrency(newPrice) }}</span>
                 </div>
             </div>
 
@@ -77,7 +98,6 @@ defineExpose({ save });
                 <QBtn
                     color="primary"
                     class="no-border-radius"
-                    dense
                     style="width: 50%"
                     @click="cancel()"
                 >
@@ -86,7 +106,6 @@ defineExpose({ save });
                 <QBtn
                     color="primary"
                     class="no-border-radius"
-                    dense
                     style="width: 50%"
                     @click="save()"
                     data-cy="saveManaBtn"
@@ -116,8 +135,3 @@ defineExpose({ save });
     min-width: 230px;
 }
 </style>
-
-<i18n>
-es:
-    New price: Nuevo precio
-</i18n>
diff --git a/src/pages/Ticket/Card/TicketNotes.vue b/src/pages/Ticket/Card/TicketNotes.vue
index feb88bf84..a3e25d63e 100644
--- a/src/pages/Ticket/Card/TicketNotes.vue
+++ b/src/pages/Ticket/Card/TicketNotes.vue
@@ -38,7 +38,9 @@ function handleDelete(row) {
     ticketNotesCrudRef.value.remove([row]);
 }
 
-async function handleSave() {
+async function handleSave(e) {
+    if (e.shiftKey && e.key === 'Enter') return;
+    e.preventDefault();
     if (!isSaving.value) {
         isSaving.value = true;
         await ticketNotesCrudRef.value?.saveChanges();
@@ -70,7 +72,7 @@ async function handleSave() {
                     <div
                         v-for="(row, index) in rows"
                         :key="index"
-                        class="q-mb-md row items-center q-gutter-x-md"
+                        class="q-mb-md row q-gutter-x-md"
                     >
                         <VnSelect
                             :label="t('ticketNotes.observationType')"
@@ -86,7 +88,8 @@ async function handleSave() {
                             :label="t('basicData.description')"
                             v-model="row.description"
                             class="col"
-                            @keyup.enter="handleSave"
+                            @keydown.enter.stop="handleSave"
+                            autogrow
                             data-cy="ticketNotesDescription"
                         />
                         <QIcon
diff --git a/src/pages/Ticket/Card/TicketSale.vue b/src/pages/Ticket/Card/TicketSale.vue
index e721e2d1c..421085142 100644
--- a/src/pages/Ticket/Card/TicketSale.vue
+++ b/src/pages/Ticket/Card/TicketSale.vue
@@ -45,7 +45,7 @@ const isTicketEditable = ref(false);
 const sales = ref([]);
 const editableStatesOptions = ref([]);
 const selectedSales = ref([]);
-const manaCode = ref('mana');
+const componentId = ref(null);
 const ticketState = computed(() => store.data?.ticketState?.state?.code);
 const transfer = ref({
     lastActiveTickets: [],
@@ -187,7 +187,7 @@ const getRowUpdateInputEvents = (sale) => {
 };
 
 const resetChanges = async () => {
-    arrayData.fetch({ append: false });
+    await arrayData.fetch({ append: false });
     tableRef.value.CrudModelRef.hasChanges = false;
     await tableRef.value.reload();
 
@@ -308,14 +308,15 @@ const changePrice = async (sale) => {
     if (newPrice != null && newPrice != sale.price) {
         if (await isSalePrepared(sale)) {
             await confirmUpdate(() => updatePrice(sale, newPrice));
-        } else updatePrice(sale, newPrice);
+        } else await updatePrice(sale, newPrice);
     }
 };
 const updatePrice = async (sale, newPrice) => {
     try {
-        await axios.post(`Sales/${sale.id}/updatePrice`, { newPrice });
-        sale.price = newPrice;
-        edit.value = { ...DEFAULT_EDIT };
+        await axios.post(`Sales/${sale.id}/updatePrice`, {
+            newPrice: newPrice,
+            componentId: componentId.value,
+        });
         notify('globals.dataSaved', 'positive');
         resetChanges();
     } catch (e) {
@@ -327,28 +328,31 @@ const changeDiscount = async (sale) => {
     const newDiscount = edit.value.discount;
     if (newDiscount != null && newDiscount != sale.discount) {
         if (await isSalePrepared(sale))
-            await confirmUpdate(() => updateDiscount([sale], newDiscount));
-        else await updateDiscount([sale], newDiscount);
+            await confirmUpdate(() =>
+                updateDiscount([sale], newDiscount, componentId.value),
+            );
+        else await updateDiscount([sale], newDiscount, componentId.value);
     }
 };
 
-const updateDiscounts = async (sales, newDiscount) => {
+const updateDiscounts = async (sales, newDiscount, componentId) => {
     const salesTracking = await fetchSalesTracking();
 
     const someSaleIsPrepared = salesTracking.some((sale) =>
         matchSale(salesTracking, sale),
     );
-    if (someSaleIsPrepared) await confirmUpdate(() => updateDiscount(sales, newDiscount));
-    else updateDiscount(sales, newDiscount);
+    if (someSaleIsPrepared)
+        await confirmUpdate(() => updateDiscount(sales, newDiscount, componentId));
+    else updateDiscount(sales, newDiscount, componentId);
 };
 
-const updateDiscount = async (sales, newDiscount = 0) => {
+const updateDiscount = async (sales, newDiscount, componentId) => {
     try {
         const salesIds = sales.map(({ id }) => id);
         const params = {
             salesIds,
-            newDiscount,
-            manaCode: manaCode.value,
+            newDiscount: newDiscount ?? 0,
+            componentId,
         };
         await axios.post(`Tickets/${route.params.id}/updateDiscount`, params);
         notify('globals.dataSaved', 'positive');
@@ -821,10 +825,11 @@ watch(
                     ref="editPriceProxyRef"
                     :sale="row"
                     :new-price="getNewPrice"
+                    v-model:component-id="componentId"
                     @save="changePrice"
                 >
                     <VnInput
-                        @keyup.enter.stop="() => editManaProxyRef.save(row)"
+                        @keyup.enter.stop="() => editPriceProxyRef.save(row)"
                         v-model.number="edit.price"
                         :label="t('basicData.price')"
                         type="number"
@@ -843,7 +848,7 @@ watch(
                     ref="editManaProxyRef"
                     :sale="row"
                     :new-price="getNewPrice"
-                    :mana-code="manaCode"
+                    v-model:component-id="componentId"
                     @save="changeDiscount"
                 >
                     <VnInput
diff --git a/src/pages/Ticket/Card/TicketSaleMoreActions.vue b/src/pages/Ticket/Card/TicketSaleMoreActions.vue
index 37441b44f..e4736e7a7 100644
--- a/src/pages/Ticket/Card/TicketSaleMoreActions.vue
+++ b/src/pages/Ticket/Card/TicketSaleMoreActions.vue
@@ -47,6 +47,7 @@ const { notify } = useNotify();
 const acl = useAcl();
 const btnDropdownRef = ref(null);
 const editManaProxyRef = ref(null);
+const componentId = ref(null);
 const { openConfirmationModal } = useVnConfirm();
 
 const newDiscount = ref(null);
@@ -112,7 +113,7 @@ const changeMultipleDiscount = () => {
     });
 
     if (newDiscount.value != null && hasChanges)
-        emit('updateDiscounts', props.sales, newDiscount.value);
+        emit('updateDiscounts', props.sales, newDiscount.value, componentId.value);
     btnDropdownRef.value.hide();
 };
 
@@ -206,6 +207,7 @@ const createRefund = async (withWarehouse) => {
                     ref="editManaProxyRef"
                     :sale="row"
                     @save="changeMultipleDiscount"
+                    v-model:component-id="componentId"
                 >
                     <VnInput
                         autofocus
diff --git a/src/pages/Ticket/Card/TicketSummary.vue b/src/pages/Ticket/Card/TicketSummary.vue
index 119b867ed..7e14b3f72 100644
--- a/src/pages/Ticket/Card/TicketSummary.vue
+++ b/src/pages/Ticket/Card/TicketSummary.vue
@@ -241,6 +241,7 @@ onMounted(async () => {
                             :value="`${entity.address?.nickname} #${entity.address?.id}`"
                         />
                         <VnLv
+                            class="white-space-normal"
                             :label="t('ticket.summary.consigneeStreet')"
                             :value="formattedAddress"
                         />
@@ -524,4 +525,7 @@ onMounted(async () => {
 .grafana {
     color: $primary-light;
 }
+.white-space-normal :deep(.value span) {
+    white-space: normal;
+}
 </style>
diff --git a/src/pages/Ticket/TicketFilter.vue b/src/pages/Ticket/TicketFilter.vue
index d84d1c082..e44133065 100644
--- a/src/pages/Ticket/TicketFilter.vue
+++ b/src/pages/Ticket/TicketFilter.vue
@@ -42,7 +42,11 @@ const groupedStates = ref([]);
         auto-load
     />
     <FetchData url="Warehouses" @on-fetch="(data) => (warehouses = data)" auto-load />
-    <VnFilterPanel :data-key="props.dataKey" :search-button="true">
+    <VnFilterPanel
+        :data-key="props.dataKey"
+        :search-button="true"
+        :unremovableParams="['from', 'to']"
+    >
         <template #tags="{ tag, formatFn }">
             <div class="q-gutter-x-xs">
                 <strong>{{ t(`params.${tag.label}`) }}: </strong>
@@ -273,6 +277,7 @@ en:
         orderFk: Order
         from: From
         shipped: Shipped
+        shippedDate: Shipped date
         to: To
         stateFk: State
         groupedStates: Grouped State
@@ -300,6 +305,7 @@ es:
         orderFk: Pedido
         from: Desde
         shipped: F. envío
+        shippedDate: F. envío
         to: Hasta
         stateFk: Estado
         groupedStates: Estado agrupado
diff --git a/src/pages/Ticket/TicketList.vue b/src/pages/Ticket/TicketList.vue
index 634b8e50a..3612cb24a 100644
--- a/src/pages/Ticket/TicketList.vue
+++ b/src/pages/Ticket/TicketList.vue
@@ -113,13 +113,13 @@ const columns = computed(() => [
     },
     {
         align: 'left',
-        name: 'shippedDate',
+        name: 'shipped',
         cardVisible: true,
         label: t('ticketList.shipped'),
         columnFilter: {
             component: 'date',
         },
-        format: ({ shippedDate }) => toDate(shippedDate),
+        format: ({ shipped }) => toDate(shipped),
     },
     {
         align: 'left',
@@ -477,7 +477,7 @@ function setReference(data) {
         prefix="card"
         :array-data-props="{
             url: 'Tickets/filter',
-            order: ['shippedDate DESC', 'shippedHour ASC', 'zoneLanding ASC', 'id'],
+            order: ['shipped DESC', 'shippedHour ASC', 'zoneLanding ASC', 'id'],
             exprBuilder,
         }"
     >
@@ -515,10 +515,10 @@ function setReference(data) {
                         <DepartmentDescriptorProxy :id="row.departmentFk" />
                     </span>
                 </template>
-                <template #column-shippedDate="{ row }">
+                <template #column-shipped="{ row }">
                     <span v-if="getDateColor(row.shipped)">
                         <QChip :class="getDateColor(row.shipped)" dense square>
-                            {{ toDate(row.shippedDate) }}
+                            {{ toDate(row.shipped) }}
                         </QChip>
                     </span>
                 </template>
diff --git a/src/pages/Zone/Card/ZoneEventExclusionForm.vue b/src/pages/Zone/Card/ZoneEventExclusionForm.vue
index 582a8bbad..1a58a0001 100644
--- a/src/pages/Zone/Card/ZoneEventExclusionForm.vue
+++ b/src/pages/Zone/Card/ZoneEventExclusionForm.vue
@@ -68,7 +68,7 @@ const arrayData = useArrayData('ZoneEvents');
 const exclusionGeoCreate = async () => {
     const params = {
         zoneFk: parseInt(route.params.id),
-        date: dated,
+        date: dated.value,
         geoIds: tickedNodes.value,
     };
     await axios.post('Zones/exclusionGeo', params);
@@ -101,9 +101,17 @@ const exclusionCreate = async () => {
         const existsEvent = data.events.find(
             (event) => toDateFormat(event.dated) === toDateFormat(dated.value),
         );
+        const existsGeoEvent = data.geoExclusions.find(
+            (event) => toDateFormat(event.dated) === toDateFormat(dated.value),
+        );
         if (existsEvent) {
             await axios.delete(`Zones/${existsEvent?.zoneFk}/events/${existsEvent?.id}`);
         }
+        if (existsGeoEvent) {
+            await axios.delete(
+                `Zones/${existsGeoEvent?.zoneFk}/exclusions/${existsGeoEvent?.zoneExclusionFk}`,
+            );
+        }
 
         if (isNew.value || props.event?.type) await axios.post(`${url}`, [body]);
         else await axios.put(`${url}/${props.event?.id}`, body);
diff --git a/src/pages/Zone/Card/ZoneEventInclusionForm.vue b/src/pages/Zone/Card/ZoneEventInclusionForm.vue
index 8b02c2d84..0eb3b1344 100644
--- a/src/pages/Zone/Card/ZoneEventInclusionForm.vue
+++ b/src/pages/Zone/Card/ZoneEventInclusionForm.vue
@@ -107,14 +107,27 @@ const createEvent = async () => {
                 `Zones/${existsExclusion?.zoneFk}/exclusions/${existsExclusion?.id}`,
             );
         }
+        const {
+            dated: formDated,
+            started,
+            ended,
+            type,
+            weekDays,
+            wdays,
+        } = eventInclusionFormData.value;
 
-        if (isNew.value)
-            await axios.post(`Zones/${id}/events`, eventInclusionFormData.value);
-        else
-            await axios.put(
-                `Zones/${id}/events/${props.event?.id}`,
-                eventInclusionFormData.value,
-            );
+        const payload = {
+            dated: formDated,
+            started,
+            ended,
+            type,
+            weekDays,
+            wdays,
+        };
+
+        if (isNew.value || props.eventType === 'exclusion')
+            await axios.post(`Zones/${id}/events`, payload);
+        else await axios.put(`Zones/${id}/events/${props.event?.id}`, payload);
     }
     quasar.notify({
         message: t('globals.dataSaved'),
diff --git a/src/router/modules/ticket.js b/src/router/modules/ticket.js
index bfcb78787..d80997257 100644
--- a/src/router/modules/ticket.js
+++ b/src/router/modules/ticket.js
@@ -113,7 +113,7 @@ const ticketCard = {
             name: 'TicketExpedition',
             meta: {
                 title: 'expedition',
-                icon: 'vn:package',
+                icon: 'view_in_ar',
             },
             component: () => import('src/pages/Ticket/Card/TicketExpedition.vue'),
         },
@@ -168,7 +168,7 @@ const ticketCard = {
             name: 'TicketBoxing',
             meta: {
                 title: 'boxing',
-                icon: 'view_in_ar',
+                icon: 'videocam',
             },
             component: () => import('src/pages/Ticket/Card/TicketBoxing.vue'),
         },
diff --git a/test/cypress/integration/claim/claimAction.spec.js b/test/cypress/integration/claim/claimAction.spec.js
index 8f406ad2f..6e916451c 100644
--- a/test/cypress/integration/claim/claimAction.spec.js
+++ b/test/cypress/integration/claim/claimAction.spec.js
@@ -6,7 +6,6 @@ describe.skip('ClaimAction', () => {
     const destinationRow = '.q-item__section > .q-field';
 
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/claim/${claimId}/action`);
     });
diff --git a/test/cypress/integration/claim/claimDevelopment.spec.js b/test/cypress/integration/claim/claimDevelopment.spec.js
index 097d870df..1fb77fe20 100755
--- a/test/cypress/integration/claim/claimDevelopment.spec.js
+++ b/test/cypress/integration/claim/claimDevelopment.spec.js
@@ -7,7 +7,6 @@ describe.skip('ClaimDevelopment', () => {
     const newReason = 'Calor';
 
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/claim/${claimId}/development`);
         cy.waitForElement('tbody');
diff --git a/test/cypress/integration/entry/entryCard/entryBasicData.spec.js b/test/cypress/integration/entry/entryCard/entryBasicData.spec.js
index ba689b8c7..de8bc6bc9 100644
--- a/test/cypress/integration/entry/entryCard/entryBasicData.spec.js
+++ b/test/cypress/integration/entry/entryCard/entryBasicData.spec.js
@@ -2,7 +2,6 @@ import '../commands.js';
 
 describe('EntryBasicData', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('buyer');
         cy.visit(`/#/entry/list`);
     });
diff --git a/test/cypress/integration/entry/entryCard/entryDescriptor.spec.js b/test/cypress/integration/entry/entryCard/entryDescriptor.spec.js
index 8185866db..d6f2b2543 100644
--- a/test/cypress/integration/entry/entryCard/entryDescriptor.spec.js
+++ b/test/cypress/integration/entry/entryCard/entryDescriptor.spec.js
@@ -1,7 +1,6 @@
 import '../commands.js';
 describe('EntryDescriptor', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('buyer');
         cy.visit(`/#/entry/list`);
     });
diff --git a/test/cypress/integration/entry/entryCard/entryDms.spec.js b/test/cypress/integration/entry/entryCard/entryDms.spec.js
index f3f0ef20b..640b70907 100644
--- a/test/cypress/integration/entry/entryCard/entryDms.spec.js
+++ b/test/cypress/integration/entry/entryCard/entryDms.spec.js
@@ -1,7 +1,6 @@
 import '../commands.js';
 describe('EntryDms', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('buyer');
         cy.visit(`/#/entry/list`);
     });
diff --git a/test/cypress/integration/entry/entryCard/entryLock.spec.js b/test/cypress/integration/entry/entryCard/entryLock.spec.js
index 6ba4392ae..957c67cc6 100644
--- a/test/cypress/integration/entry/entryCard/entryLock.spec.js
+++ b/test/cypress/integration/entry/entryCard/entryLock.spec.js
@@ -1,7 +1,6 @@
 import '../commands.js';
 describe('EntryLock', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('buyer');
         cy.visit(`/#/entry/list`);
     });
diff --git a/test/cypress/integration/entry/entryCard/entryNotes.spec.js b/test/cypress/integration/entry/entryCard/entryNotes.spec.js
index 544ac23b0..80c9fd38d 100644
--- a/test/cypress/integration/entry/entryCard/entryNotes.spec.js
+++ b/test/cypress/integration/entry/entryCard/entryNotes.spec.js
@@ -2,7 +2,6 @@ import '../commands.js';
 
 describe('EntryNotes', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('buyer');
         cy.visit(`/#/entry/list`);
     });
diff --git a/test/cypress/integration/entry/entryList.spec.js b/test/cypress/integration/entry/entryList.spec.js
index bad47615f..fc76f6d87 100644
--- a/test/cypress/integration/entry/entryList.spec.js
+++ b/test/cypress/integration/entry/entryList.spec.js
@@ -2,7 +2,6 @@ import './commands';
 
 describe('EntryList', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('buyer');
         cy.visit(`/#/entry/list`);
     });
diff --git a/test/cypress/integration/entry/entryStockBought.spec.js b/test/cypress/integration/entry/entryStockBought.spec.js
index 3fad44d91..60019c9f4 100644
--- a/test/cypress/integration/entry/entryStockBought.spec.js
+++ b/test/cypress/integration/entry/entryStockBought.spec.js
@@ -1,6 +1,5 @@
 describe('EntryStockBought', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('buyer');
         cy.visit(`/#/entry/stock-Bought`);
     });
diff --git a/test/cypress/integration/entry/entrySupplier.spec.js b/test/cypress/integration/entry/entrySupplier.spec.js
index 83deecea5..df90d00d7 100644
--- a/test/cypress/integration/entry/entrySupplier.spec.js
+++ b/test/cypress/integration/entry/entrySupplier.spec.js
@@ -1,6 +1,5 @@
 describe('EntrySupplier when is supplier', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('supplier');
         cy.visit(`/#/entry/my`, {
             onBeforeLoad(win) {
diff --git a/test/cypress/integration/entry/entryWasteRecalc.spec.js b/test/cypress/integration/entry/entryWasteRecalc.spec.js
index 1b358676c..bd50e9c19 100644
--- a/test/cypress/integration/entry/entryWasteRecalc.spec.js
+++ b/test/cypress/integration/entry/entryWasteRecalc.spec.js
@@ -1,7 +1,6 @@
 import './commands';
 describe('EntryDms', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('buyerBoss');
         cy.visit(`/#/entry/waste-recalc`);
     });
diff --git a/test/cypress/integration/invoiceOut/invoiceOutList.spec.js b/test/cypress/integration/invoiceOut/invoiceOutList.spec.js
index b8b42fa4b..ba6f3e122 100644
--- a/test/cypress/integration/invoiceOut/invoiceOutList.spec.js
+++ b/test/cypress/integration/invoiceOut/invoiceOutList.spec.js
@@ -28,7 +28,7 @@ describe('InvoiceOut list', () => {
         cy.dataCy('InvoiceOutDownloadPdfBtn').click();
     });
 
-    it('should open the invoice descriptor from table icon', () => {
+    it.skip('should open the invoice descriptor from table icon', () => {
         cy.get(firstSummaryIcon).click();
         cy.get('.cardSummary').should('be.visible');
         cy.get('.summaryHeader > div').should('include.text', 'A1111111');
diff --git a/test/cypress/integration/invoiceOut/invoiceOutMakeInvoice.spec.js b/test/cypress/integration/invoiceOut/invoiceOutMakeInvoice.spec.js
index e93326f1d..d58eb4a1f 100644
--- a/test/cypress/integration/invoiceOut/invoiceOutMakeInvoice.spec.js
+++ b/test/cypress/integration/invoiceOut/invoiceOutMakeInvoice.spec.js
@@ -1,7 +1,6 @@
 /// <reference types="cypress" />
 describe.skip('InvoiceOut manual invoice', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/ticket/list`);
         cy.get('#searchbar input').type('{enter}');
diff --git a/test/cypress/integration/invoiceOut/invoiceOutNegativeBases.spec.js b/test/cypress/integration/invoiceOut/invoiceOutNegativeBases.spec.js
index 9c6eef2ed..89f71e940 100644
--- a/test/cypress/integration/invoiceOut/invoiceOutNegativeBases.spec.js
+++ b/test/cypress/integration/invoiceOut/invoiceOutNegativeBases.spec.js
@@ -4,7 +4,6 @@ describe('InvoiceOut negative bases', () => {
         `:nth-child(1) > [data-col-field="${opt}"] > .no-padding > .link`;
 
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/invoice-out/negative-bases`);
     });
diff --git a/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js b/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
index 49eed32c7..029165bb8 100644
--- a/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
+++ b/test/cypress/integration/invoiceOut/invoiceOutSummary.spec.js
@@ -15,7 +15,7 @@ describe('InvoiceOut summary', () => {
         cy.login('developer');
         cy.visit(`/#/invoice-out/1/summary`);
     });
-    it('open the descriptors', () => {
+    it.skip('open the descriptors', () => {
         cy.get(firstRowDescriptors(1)).click();
         cy.get('.descriptor').should('be.visible');
         cy.get('.q-item > .q-item__label').should('include.text', '1');
@@ -30,7 +30,7 @@ describe('InvoiceOut summary', () => {
         cy.get('.q-item > .q-item__label').should('include.text', '1101');
     });
 
-    it('should open the ticket list', () => {
+    it.skip('should open the ticket list', () => {
         cy.get(toTicketList).click();
         cy.get('[data-col-field="stateFk"]').each(($el) => {
             cy.wrap($el).contains('T1111111');
diff --git a/test/cypress/integration/invoiceOut/invvoiceOutGlobal.spec.js b/test/cypress/integration/invoiceOut/invvoiceOutGlobal.spec.js
index 06e132b39..0170970a5 100644
--- a/test/cypress/integration/invoiceOut/invvoiceOutGlobal.spec.js
+++ b/test/cypress/integration/invoiceOut/invvoiceOutGlobal.spec.js
@@ -1,7 +1,6 @@
 /// <reference types="cypress" />
 describe('InvoiceOut global invoicing', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('administrative');
         cy.visit(`/#/invoice-out/global-invoicing`);
     });
@@ -17,7 +16,7 @@ describe('InvoiceOut global invoicing', () => {
         cy.dataCy('InvoiceOutGlobalPrinterSelect').type('printer1');
         cy.get('.q-menu .q-item').contains('printer1').click();
         cy.get(
-            '[label="Invoice date"] > .q-field > .q-field__inner > .q-field__control'
+            '[label="Invoice date"] > .q-field > .q-field__inner > .q-field__control',
         ).click();
         cy.get(':nth-child(5) > div > .q-btn > .q-btn__content > .block').click();
         cy.get('.q-date__years-content > :nth-child(2) > .q-btn').click();
diff --git a/test/cypress/integration/item/itemBarcodes.spec.js b/test/cypress/integration/item/itemBarcodes.spec.js
index 1f6698f9c..746cfa0f1 100644
--- a/test/cypress/integration/item/itemBarcodes.spec.js
+++ b/test/cypress/integration/item/itemBarcodes.spec.js
@@ -1,7 +1,6 @@
 /// <reference types="cypress" />
 describe('ItemBarcodes', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/item/1/barcode`);
     });
diff --git a/test/cypress/integration/item/itemBotanical.spec.js b/test/cypress/integration/item/itemBotanical.spec.js
index 6105ef179..420181b0d 100644
--- a/test/cypress/integration/item/itemBotanical.spec.js
+++ b/test/cypress/integration/item/itemBotanical.spec.js
@@ -1,7 +1,6 @@
 /// <reference types="cypress" />
 describe('Item botanical', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/item/1/botanical`);
     });
diff --git a/test/cypress/integration/item/itemList.spec.js b/test/cypress/integration/item/itemList.spec.js
index 10e388580..bd8108344 100644
--- a/test/cypress/integration/item/itemList.spec.js
+++ b/test/cypress/integration/item/itemList.spec.js
@@ -2,7 +2,6 @@
 
 describe.skip('Item list', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/item/list`);
         cy.typeSearchbar('{enter}');
diff --git a/test/cypress/integration/item/itemSummary.spec.js b/test/cypress/integration/item/itemSummary.spec.js
index 8d67c8e3c..65b4c8629 100644
--- a/test/cypress/integration/item/itemSummary.spec.js
+++ b/test/cypress/integration/item/itemSummary.spec.js
@@ -1,7 +1,6 @@
 /// <reference types="cypress" />
 describe('Item summary', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/item/1/summary`);
     });
diff --git a/test/cypress/integration/item/itemTag.spec.js b/test/cypress/integration/item/itemTag.spec.js
index 425eaffe6..65d339151 100644
--- a/test/cypress/integration/item/itemTag.spec.js
+++ b/test/cypress/integration/item/itemTag.spec.js
@@ -1,6 +1,5 @@
 describe('Item tag', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/item/1/tags`);
         cy.get('.q-page').should('be.visible');
diff --git a/test/cypress/integration/item/itemTax.spec.js b/test/cypress/integration/item/itemTax.spec.js
index 6ff147135..971e3a732 100644
--- a/test/cypress/integration/item/itemTax.spec.js
+++ b/test/cypress/integration/item/itemTax.spec.js
@@ -1,7 +1,6 @@
 /// <reference types="cypress" />
 describe('Item tax', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/item/1/tax`);
     });
diff --git a/test/cypress/integration/item/itemType.spec.js b/test/cypress/integration/item/itemType.spec.js
index 466a49708..180a12a0f 100644
--- a/test/cypress/integration/item/itemType.spec.js
+++ b/test/cypress/integration/item/itemType.spec.js
@@ -6,7 +6,6 @@ describe('Item type', () => {
     const type = 'Flower';
 
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/item/item-type`);
     });
diff --git a/test/cypress/integration/order/orderList.spec.js b/test/cypress/integration/order/orderList.spec.js
index ee011ea05..b77ef8fca 100644
--- a/test/cypress/integration/order/orderList.spec.js
+++ b/test/cypress/integration/order/orderList.spec.js
@@ -6,7 +6,6 @@ describe('OrderList', () => {
 
     beforeEach(() => {
         cy.login('developer');
-        cy.viewport(1920, 1080);
         cy.visit('/#/order/list');
     });
 
diff --git a/test/cypress/integration/route/agency/agencyModes.spec.js b/test/cypress/integration/route/agency/agencyModes.spec.js
index 3f5784997..edf7f8819 100644
--- a/test/cypress/integration/route/agency/agencyModes.spec.js
+++ b/test/cypress/integration/route/agency/agencyModes.spec.js
@@ -2,7 +2,6 @@ describe('Agency modes', () => {
     const name = 'inhouse pickup';
 
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/route/agency/1/modes`);
     });
diff --git a/test/cypress/integration/route/agency/agencyWorkCenter.spec.js b/test/cypress/integration/route/agency/agencyWorkCenter.spec.js
index 79dcd6f70..d73ba1491 100644
--- a/test/cypress/integration/route/agency/agencyWorkCenter.spec.js
+++ b/test/cypress/integration/route/agency/agencyWorkCenter.spec.js
@@ -13,7 +13,6 @@ describe('AgencyWorkCenter', () => {
     };
 
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/route/agency/11/workCenter`);
     });
diff --git a/test/cypress/integration/route/cmr/cmrList.spec.js b/test/cypress/integration/route/cmr/cmrList.spec.js
index d33508e3a..a25a0c10a 100644
--- a/test/cypress/integration/route/cmr/cmrList.spec.js
+++ b/test/cypress/integration/route/cmr/cmrList.spec.js
@@ -24,7 +24,6 @@ describe('Cmr list', () => {
     };
 
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit('/#/route/cmr');
         cy.typeSearchbar('{enter}');
diff --git a/test/cypress/integration/route/roadMap/roadmapList.spec.js b/test/cypress/integration/route/roadMap/roadmapList.spec.js
index 35c0c2b02..bacf130a7 100644
--- a/test/cypress/integration/route/roadMap/roadmapList.spec.js
+++ b/test/cypress/integration/route/roadMap/roadmapList.spec.js
@@ -27,7 +27,6 @@ describe('RoadMap', () => {
     const summaryUrl = '/summary';
 
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/route/roadmap`);
         cy.typeSearchbar('{enter}');
diff --git a/test/cypress/integration/route/routeAutonomous.spec.js b/test/cypress/integration/route/routeAutonomous.spec.js
index f7abb50a5..854e0ba18 100644
--- a/test/cypress/integration/route/routeAutonomous.spec.js
+++ b/test/cypress/integration/route/routeAutonomous.spec.js
@@ -41,7 +41,6 @@ describe('RouteAutonomous', () => {
     const dataSaved = 'Data saved';
 
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/route/agency-term`);
         cy.typeSearchbar('{enter}');
diff --git a/test/cypress/integration/route/routeExtendedList.spec.js b/test/cypress/integration/route/routeExtendedList.spec.js
index 55f77a5c8..d2b4e2108 100644
--- a/test/cypress/integration/route/routeExtendedList.spec.js
+++ b/test/cypress/integration/route/routeExtendedList.spec.js
@@ -76,7 +76,6 @@ describe.skip('Route extended list', () => {
     }
 
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(url);
         cy.typeSearchbar('{enter}');
diff --git a/test/cypress/integration/route/routeList.spec.js b/test/cypress/integration/route/routeList.spec.js
index f08c267a4..309f8d023 100644
--- a/test/cypress/integration/route/routeList.spec.js
+++ b/test/cypress/integration/route/routeList.spec.js
@@ -26,8 +26,8 @@ describe('Route', () => {
     const summaryUrl = '/summary';
 
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
+        cy.viewport(1920, 1080);
         cy.visit(`/#/route/list`);
         cy.typeSearchbar('{enter}');
     });
diff --git a/test/cypress/integration/route/vehicle/vehicleDescriptor.spec.js b/test/cypress/integration/route/vehicle/vehicleDescriptor.spec.js
index 3e9c816c4..39332b2e0 100644
--- a/test/cypress/integration/route/vehicle/vehicleDescriptor.spec.js
+++ b/test/cypress/integration/route/vehicle/vehicleDescriptor.spec.js
@@ -1,6 +1,5 @@
 describe('Vehicle', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('deliveryAssistant');
         cy.visit(`/#/route/vehicle/7/summary`);
     });
diff --git a/test/cypress/integration/route/vehicle/vehicleList.spec.js b/test/cypress/integration/route/vehicle/vehicleList.spec.js
index 2b3c9cdbc..c30f87c6d 100644
--- a/test/cypress/integration/route/vehicle/vehicleList.spec.js
+++ b/test/cypress/integration/route/vehicle/vehicleList.spec.js
@@ -21,7 +21,6 @@ describe('Vehicle list', () => {
     const summaryUrl = '/summary';
 
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/route/vehicle/list`);
         cy.typeSearchbar('{enter}');
diff --git a/test/cypress/integration/route/vehicle/vehicleNotes.spec.js b/test/cypress/integration/route/vehicle/vehicleNotes.spec.js
index cd92cc4af..17b870305 100644
--- a/test/cypress/integration/route/vehicle/vehicleNotes.spec.js
+++ b/test/cypress/integration/route/vehicle/vehicleNotes.spec.js
@@ -10,7 +10,6 @@ describe('Vehicle Notes', () => {
     const newNoteText = 'probando';
 
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/route/vehicle/1/notes`);
     });
diff --git a/test/cypress/integration/shelving/parking/parkingList.spec.js b/test/cypress/integration/shelving/parking/parkingList.spec.js
index 7372da164..44b5fd9bc 100644
--- a/test/cypress/integration/shelving/parking/parkingList.spec.js
+++ b/test/cypress/integration/shelving/parking/parkingList.spec.js
@@ -5,7 +5,6 @@ describe('ParkingList', () => {
     const summaryHeader = '.header-link';
 
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/shelving/parking/list`);
     });
diff --git a/test/cypress/integration/shelving/shelvingBasicData.spec.js b/test/cypress/integration/shelving/shelvingBasicData.spec.js
index d7b0dc692..e9ff7f696 100644
--- a/test/cypress/integration/shelving/shelvingBasicData.spec.js
+++ b/test/cypress/integration/shelving/shelvingBasicData.spec.js
@@ -3,7 +3,6 @@ describe('ShelvingList', () => {
     const parking =
         '.q-card > :nth-child(1) > .q-select > .q-field__inner > .q-field__control > .q-field__control-container';
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/shelving/1/basic-data`);
     });
diff --git a/test/cypress/integration/shelving/shelvingList.spec.js b/test/cypress/integration/shelving/shelvingList.spec.js
index 20b72e419..7a878141a 100644
--- a/test/cypress/integration/shelving/shelvingList.spec.js
+++ b/test/cypress/integration/shelving/shelvingList.spec.js
@@ -1,7 +1,6 @@
 /// <reference types="cypress" />
 describe('ShelvingList', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/shelving/list`);
     });
diff --git a/test/cypress/integration/supplier/SupplierBalance.spec.js b/test/cypress/integration/supplier/SupplierBalance.spec.js
index e4a3ee65c..575624283 100644
--- a/test/cypress/integration/supplier/SupplierBalance.spec.js
+++ b/test/cypress/integration/supplier/SupplierBalance.spec.js
@@ -1,6 +1,5 @@
 describe('Supplier Balance', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/supplier/1/balance`);
     });
diff --git a/test/cypress/integration/ticket/ticketDescriptor.spec.js b/test/cypress/integration/ticket/ticketDescriptor.spec.js
index b5c95c463..6c3ad704e 100644
--- a/test/cypress/integration/ticket/ticketDescriptor.spec.js
+++ b/test/cypress/integration/ticket/ticketDescriptor.spec.js
@@ -9,7 +9,6 @@ describe('Ticket descriptor', () => {
     const weightValue = '[data-cy="vnLvWeight"]';
     beforeEach(() => {
         cy.login('developer');
-        cy.viewport(1920, 1080);
     });
 
     it('should clone the ticket without warehouse', () => {
diff --git a/test/cypress/integration/ticket/ticketExpedition.spec.js b/test/cypress/integration/ticket/ticketExpedition.spec.js
index 95ec330dc..c6b633de8 100644
--- a/test/cypress/integration/ticket/ticketExpedition.spec.js
+++ b/test/cypress/integration/ticket/ticketExpedition.spec.js
@@ -5,7 +5,6 @@ describe('Ticket expedtion', () => {
 
     beforeEach(() => {
         cy.login('developer');
-        cy.viewport(1920, 1080);
     });
 
     it('should change the state', () => {
diff --git a/test/cypress/integration/ticket/ticketFilter.spec.js b/test/cypress/integration/ticket/ticketFilter.spec.js
index 2e5a3f3ce..60ad7f287 100644
--- a/test/cypress/integration/ticket/ticketFilter.spec.js
+++ b/test/cypress/integration/ticket/ticketFilter.spec.js
@@ -2,7 +2,6 @@
 describe('TicketFilter', () => {
     beforeEach(() => {
         cy.login('developer');
-        cy.viewport(1920, 1080);
         cy.visit('/#/ticket/list');
     });
 
diff --git a/test/cypress/integration/ticket/ticketList.spec.js b/test/cypress/integration/ticket/ticketList.spec.js
index e18025319..302707601 100644
--- a/test/cypress/integration/ticket/ticketList.spec.js
+++ b/test/cypress/integration/ticket/ticketList.spec.js
@@ -2,7 +2,6 @@
 describe('TicketList', () => {
     beforeEach(() => {
         cy.login('developer');
-        cy.viewport(1920, 1080);
         cy.visit('/#/ticket/list', false);
     });
 
diff --git a/test/cypress/integration/ticket/ticketNotes.spec.js b/test/cypress/integration/ticket/ticketNotes.spec.js
index df1ff9137..f1bd48f61 100644
--- a/test/cypress/integration/ticket/ticketNotes.spec.js
+++ b/test/cypress/integration/ticket/ticketNotes.spec.js
@@ -2,7 +2,6 @@
 describe('TicketNotes', () => {
     beforeEach(() => {
         cy.login('developer');
-        cy.viewport(1920, 1080);
         cy.visit('/#/ticket/31/observation');
     });
 
diff --git a/test/cypress/integration/ticket/ticketRequest.spec.js b/test/cypress/integration/ticket/ticketRequest.spec.js
index 3b237826e..dc408c3a1 100644
--- a/test/cypress/integration/ticket/ticketRequest.spec.js
+++ b/test/cypress/integration/ticket/ticketRequest.spec.js
@@ -2,7 +2,6 @@
 describe('TicketRequest', () => {
     beforeEach(() => {
         cy.login('developer');
-        cy.viewport(1920, 1080);
         cy.visit('/#/ticket/31/request');
     });
 
diff --git a/test/cypress/integration/ticket/ticketSale.spec.js b/test/cypress/integration/ticket/ticketSale.spec.js
index f433f0d11..6b2104392 100644
--- a/test/cypress/integration/ticket/ticketSale.spec.js
+++ b/test/cypress/integration/ticket/ticketSale.spec.js
@@ -2,9 +2,9 @@
 const firstRow = 'tbody > :nth-child(1)';
 
 describe('TicketSale', () => {
-    describe('#23', () => {
+    describe.skip('Ticket  #23', () => {
         beforeEach(() => {
-            cy.login('salesBoss');
+            cy.login('claimManager');
             cy.viewport(1920, 1080);
             cy.visit('/#/ticket/23/sale');
         });
@@ -15,6 +15,8 @@ describe('TicketSale', () => {
             cy.get('[data-col-field="price"]').find('.q-btn').click();
             cy.waitForElement('[data-cy="ticketEditManaProxy"]');
             cy.dataCy('ticketEditManaProxy').should('exist');
+            cy.get('[data-cy="componentOption-37"]').click();
+
             cy.waitForElement('[data-cy="Price_input"]');
             cy.dataCy('Price_input').clear().type(price);
             cy.intercept('POST', /\/api\/Sales\/\d+\/updatePrice/).as('updatePrice');
@@ -33,6 +35,7 @@ describe('TicketSale', () => {
             cy.get('[data-col-field="discount"]').find('.q-btn').click();
             cy.waitForElement('[data-cy="ticketEditManaProxy"]');
             cy.dataCy('ticketEditManaProxy').should('exist');
+            cy.get('[data-cy="componentOption-37"]').click();
             cy.waitForElement('[data-cy="Disc_input"]');
             cy.dataCy('Disc_input').clear().type(discount);
             cy.intercept('POST', /\/api\/Tickets\/\d+\/updateDiscount/).as(
@@ -83,8 +86,7 @@ describe('TicketSale', () => {
     });
     describe('#24 add claim', () => {
         beforeEach(() => {
-            cy.login('developer');
-            cy.viewport(1920, 1080);
+            cy.login('salesPerson');
             cy.visit('/#/ticket/24/sale');
         });
 
@@ -102,8 +104,7 @@ describe('TicketSale', () => {
     });
     describe('#31 free ticket', () => {
         beforeEach(() => {
-            cy.login('developer');
-            cy.viewport(1920, 1080);
+            cy.login('claimManager');
             cy.visit('/#/ticket/31/sale');
         });
 
@@ -139,14 +140,15 @@ describe('TicketSale', () => {
             cy.dataCy('ticketSaleMoreActionsDropdown').should('be.disabled');
         });
 
-        it.only('should update discount when "Update discount" is clicked', () => {
+        it('should update discount when "Update discount" is clicked', () => {
             const discount = Number((Math.random() * 99 + 1).toFixed(2));
 
             selectFirstRow();
             cy.dataCy('ticketSaleMoreActionsDropdown').click();
             cy.waitForElement('[data-cy="updateDiscountItem"]');
-            cy.dataCy('updateDiscountItem').should('exist');
             cy.dataCy('updateDiscountItem').click();
+            cy.waitForElement('[data-cy="componentOption-37"]');
+            cy.get('[data-cy="componentOption-37"]').click();
             cy.waitForElement('[data-cy="ticketSaleDiscountInput"]');
             cy.dataCy('ticketSaleDiscountInput').find('input').focus();
             cy.intercept('POST', /\/api\/Tickets\/\d+\/updateDiscount/).as(
@@ -191,8 +193,7 @@ describe('TicketSale', () => {
     });
     describe('#32 transfer', () => {
         beforeEach(() => {
-            cy.login('developer');
-            cy.viewport(1920, 1080);
+            cy.login('salesPerson');
             cy.visit('/#/ticket/32/sale');
         });
         it('transfer sale to a new ticket', () => {
diff --git a/test/cypress/integration/vnComponent/VnBreadcrumbs.spec.js b/test/cypress/integration/vnComponent/VnBreadcrumbs.spec.js
index 8e37d8c9c..347dae7df 100644
--- a/test/cypress/integration/vnComponent/VnBreadcrumbs.spec.js
+++ b/test/cypress/integration/vnComponent/VnBreadcrumbs.spec.js
@@ -2,7 +2,6 @@
 describe('VnBreadcrumbs', () => {
     const lastBreadcrumb = '.q-breadcrumbs--last > .q-breadcrumbs__el';
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit('/');
     });
diff --git a/test/cypress/integration/wagon/wagonType/wagonTypeCreate.spec.js b/test/cypress/integration/wagon/wagonType/wagonTypeCreate.spec.js
index 915927a6d..3b5d05c6f 100644
--- a/test/cypress/integration/wagon/wagonType/wagonTypeCreate.spec.js
+++ b/test/cypress/integration/wagon/wagonType/wagonTypeCreate.spec.js
@@ -1,6 +1,5 @@
 describe('WagonTypeCreate', () => {
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit('/#/wagon/type/list');
         cy.waitForElement('.q-page', 6000);
diff --git a/test/cypress/integration/wagon/wagonType/wagonTypeEdit.spec.js b/test/cypress/integration/wagon/wagonType/wagonTypeEdit.spec.js
index 36dd83411..d82f9a10d 100644
--- a/test/cypress/integration/wagon/wagonType/wagonTypeEdit.spec.js
+++ b/test/cypress/integration/wagon/wagonType/wagonTypeEdit.spec.js
@@ -2,7 +2,6 @@ describe('WagonTypeEdit', () => {
     const trayColorRow =
         '.q-select > .q-field__inner > .q-field__control > .q-field__control-container';
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit('/#/wagon/type/1/edit');
     });
diff --git a/test/cypress/integration/worker/workerPit.spec.js b/test/cypress/integration/worker/workerPit.spec.js
index 04f232648..cee4560dc 100644
--- a/test/cypress/integration/worker/workerPit.spec.js
+++ b/test/cypress/integration/worker/workerPit.spec.js
@@ -4,7 +4,6 @@ describe('WorkerPit', () => {
     const savePIT = '#st-actions > .q-btn-group > .q-btn--standard';
 
     beforeEach(() => {
-        cy.viewport(1920, 1080);
         cy.login('developer');
         cy.visit(`/#/worker/1107/pit`);
     });
diff --git a/test/cypress/integration/zone/zoneDeliveryDays.spec.js b/test/cypress/integration/zone/zoneDeliveryDays.spec.js
index a89def12d..6d19edb77 100644
--- a/test/cypress/integration/zone/zoneDeliveryDays.spec.js
+++ b/test/cypress/integration/zone/zoneDeliveryDays.spec.js
@@ -4,7 +4,6 @@ describe('ZoneDeliveryDays', () => {
     const submitForm = '.q-form > .q-btn > .q-btn__content';
     beforeEach(() => {
         cy.login('developer');
-        cy.viewport(1920, 1080);
         cy.visit(`/#/zone/delivery-days`);
     });
 
diff --git a/test/cypress/integration/zone/zoneUpcomingDeliveries.spec.js b/test/cypress/integration/zone/zoneUpcomingDeliveries.spec.js
index 576b2ea70..1c28e732c 100644
--- a/test/cypress/integration/zone/zoneUpcomingDeliveries.spec.js
+++ b/test/cypress/integration/zone/zoneUpcomingDeliveries.spec.js
@@ -4,7 +4,6 @@ describe('ZoneUpcomingDeliveries', () => {
 
     beforeEach(() => {
         cy.login('developer');
-        cy.viewport(1920, 1080);
         cy.visit(`/#/zone/upcoming-deliveries`);
     });