diff --git a/src/components/common/VnCardBeta.vue b/src/components/common/VnCardBeta.vue
index 16fc14c2c41..d2bed62575c 100644
--- a/src/components/common/VnCardBeta.vue
+++ b/src/components/common/VnCardBeta.vue
@@ -38,23 +38,17 @@ onBeforeMount(async () => {
     }
 });
 
-if (props.baseUrl) {
-    onBeforeRouteUpdate(async (to, from) => {
-        if (hasRouteParam(to.params)) {
-            const { matched } = router.currentRoute.value;
-            const { name } = matched.at(-3);
-            if (name) {
-                router.push({ name, params: to.params });
-            }
-        }
-        if (to.params.id !== from.params.id) {
-            arrayData.store.url = `${props.baseUrl}/${to.params.id}`;
-            await arrayData.fetch({ append: false, updateRouter: false });
-        }
-    });
-}
-function hasRouteParam(params, valueToCheck = ':addressId') {
-    return Object.values(params).includes(valueToCheck);
+onBeforeRouteUpdate(async (to, from) => {
+    const id = to.params.id;
+    if (id !== from.params.id) await fetch(id, true);
+});
+
+async function fetch(id, append = false) {
+    const regex = /\/(\d+)/;
+    if (props.idInWhere) arrayData.store.filter.where = { id };
+    else if (!regex.test(props.url)) arrayData.store.url = `${props.url}/${id}`;
+    else arrayData.store.url = props.url.replace(regex, `/${id}`);
+    await arrayData.fetch({ append, updateRouter: false });
 }
 </script>
 <template>
diff --git a/src/components/ui/VnUsesMana.vue b/src/components/ui/VnUsesMana.vue
index 1ad4a706e93..cb066b2359c 100644
--- a/src/components/ui/VnUsesMana.vue
+++ b/src/components/ui/VnUsesMana.vue
@@ -53,3 +53,8 @@ const manaCode = ref(props.manaCode);
         />
     </div>
 </template>
+<i18n>
+    es:
+        Promotion mana: Maná promoción
+        Claim mana: Maná reclamación
+</i18n>
diff --git a/src/pages/Ticket/Card/TicketEditMana.vue b/src/pages/Ticket/Card/TicketEditMana.vue
index 693875712d1..a55658a07e7 100644
--- a/src/pages/Ticket/Card/TicketEditMana.vue
+++ b/src/pages/Ticket/Card/TicketEditMana.vue
@@ -47,7 +47,10 @@ const cancel = () => {
             <div v-else>
                 <div class="header">Mana: {{ toCurrency(mana) }}</div>
                 <div class="q-pa-md">
-                    <slot />
+                    <slot :popup="QPopupProxyRef" />
+                    <div v-if="usesMana" class="column q-gutter-y-sm q-mt-sm">
+                        <VnUsesMana :mana-code="manaCode" />
+                    </div>
                     <div v-if="newPrice" class="column items-center q-mt-lg">
                         <span class="text-primary">{{ t('New price') }}</span>
                         <span class="text-subtitle1">
@@ -56,9 +59,6 @@ const cancel = () => {
                     </div>
                 </div>
             </div>
-            <div v-if="usesMana" class="column q-gutter-y-sm q-mt-sm">
-                <VnUsesMana :mana-code="manaCode" />
-            </div>
             <div class="row">
                 <QBtn
                     color="primary"
diff --git a/src/pages/Ticket/Card/TicketSale.vue b/src/pages/Ticket/Card/TicketSale.vue
index 004bcbe7927..118761b23d4 100644
--- a/src/pages/Ticket/Card/TicketSale.vue
+++ b/src/pages/Ticket/Card/TicketSale.vue
@@ -133,7 +133,7 @@ const columns = computed(() => [
         align: 'left',
         label: t('globals.amount'),
         name: 'amount',
-        format: (row) => parseInt(row.amount * row.quantity),
+        format: (row) => toCurrency(getSaleTotal(row)),
     },
     {
         align: 'left',
@@ -331,8 +331,7 @@ const updateDiscount = async (sales, newDiscount = null) => {
     };
     await axios.post(`Tickets/${route.params.id}/updateDiscount`, params);
     notify('globals.dataSaved', 'positive');
-    for (let sale of sales) sale.discount = _newDiscount;
-    edit.value = { ...DEFAULT_EDIT };
+    tableRef.value.reload();
 };
 
 const getNewPrice = computed(() => {
@@ -789,21 +788,24 @@ watch(
                     :mana-code="manaCode"
                     @save="changeDiscount(row)"
                 >
-                    <VnInput
-                        v-model.number="edit.discount"
-                        :label="t('ticketSale.discount')"
-                        type="number"
-                    />
-                    <div v-if="usesMana" class="column q-gutter-y-sm q-mt-sm">
-                        <VnUsesMana :mana-code="manaCode" />
-                    </div>
+                    <template #default="{ popup }">
+                        <VnInput
+                            autofocus
+                            @keyup.enter="
+                                () => {
+                                    changeDiscount(row);
+                                    popup.hide();
+                                }
+                            "
+                            v-model.number="edit.discount"
+                            :label="t('ticketSale.discount')"
+                            type="number"
+                        />
+                    </template>
                 </TicketEditManaProxy>
             </template>
             <span v-else>{{ toPercentage(row.discount / 100) }}</span>
         </template>
-        <template #column-amount="{ row }">
-            {{ toCurrency(row.quantity * row.price) }}
-        </template>
     </VnTable>
 
     <QPageSticky :offset="[20, 20]" style="z-index: 2">
diff --git a/src/pages/Worker/Card/WorkerDescriptorMenu.vue b/src/pages/Worker/Card/WorkerDescriptorMenu.vue
index 8d82dc839f7..0dcb4fd7115 100644
--- a/src/pages/Worker/Card/WorkerDescriptorMenu.vue
+++ b/src/pages/Worker/Card/WorkerDescriptorMenu.vue
@@ -53,7 +53,7 @@ const showChangePasswordDialog = () => {
         </QItemSection>
     </QItem>
     <QItem
-        v-if="!worker.user.emailVerified && user.id == worker.id"
+        v-if="!worker.user.emailVerified && user.id != worker.id"
         v-ripple
         clickable
         @click="showChangePasswordDialog"