diff --git a/src/components/common/VnLog.vue b/src/components/common/VnLog.vue
index 0f5a162e3e9..e2f18866a45 100644
--- a/src/components/common/VnLog.vue
+++ b/src/components/common/VnLog.vue
@@ -219,6 +219,7 @@ function filterByRecord(modelLog) {
 }
 
 async function applyFilter(params = {}) {
+    paginate.value.arrayData.resetPagination();
     paginate.value.arrayData.applyFilter({
         filter: {},
         params: { originFk: route.params.id, ...params },
diff --git a/src/pages/Account/Card/AccountDescriptorProxy.vue b/src/pages/Account/Card/AccountDescriptorProxy.vue
index de3220fea32..6a4b3e267eb 100644
--- a/src/pages/Account/Card/AccountDescriptorProxy.vue
+++ b/src/pages/Account/Card/AccountDescriptorProxy.vue
@@ -6,7 +6,7 @@ import AccountSummary from './AccountSummary.vue';
     <QPopupProxy style="max-width: 10px">
         <AccountDescriptor
             v-if="$attrs.id"
-            v-bind="$attrs.id"
+            v-bind="$attrs"
             :summary="AccountSummary"
             :proxy-render="true"
         />
diff --git a/src/pages/Customer/CustomerFilter.vue b/src/pages/Customer/CustomerFilter.vue
index 107a081441e..c30b1152861 100644
--- a/src/pages/Customer/CustomerFilter.vue
+++ b/src/pages/Customer/CustomerFilter.vue
@@ -72,6 +72,7 @@ const exprBuilder = (param, value) => {
                         option-value="id"
                         option-label="name"
                         url="Departments"
+                        no-one="true"
                     />
                 </QItemSection>
             </QItem>
@@ -154,9 +155,9 @@ en:
         city: City
         phone: Phone
         email: Email
+        departmentFk: Department
         isToBeMailed: Mailed
         isEqualizated: Equailized
-        departmentFk: Department
         businessTypeFk: Business type
         sageTaxTypeFk: Sage Tax Type
         sageTransactionTypeFk: Sage Tax Type
diff --git a/src/pages/Customer/Notifications/CustomerNotifications.vue b/src/pages/Customer/Notifications/CustomerNotifications.vue
index b30ed6f76ce..cbbd6d20571 100644
--- a/src/pages/Customer/Notifications/CustomerNotifications.vue
+++ b/src/pages/Customer/Notifications/CustomerNotifications.vue
@@ -127,6 +127,7 @@ es:
     Identifier: Identificador
     Social name: Razón social
     Phone: Teléfono
+    Postcode: Código postal
     City: Población
     Email: Email
     Campaign consumption: Consumo campaña
diff --git a/src/pages/Customer/components/CustomerAddressEdit.vue b/src/pages/Customer/components/CustomerAddressEdit.vue
index f852c160ac2..bc76f59859a 100644
--- a/src/pages/Customer/components/CustomerAddressEdit.vue
+++ b/src/pages/Customer/components/CustomerAddressEdit.vue
@@ -93,10 +93,26 @@ const updateAddressTicket = async () => {
 };
 
 const updateObservations = async (payload) => {
-    await axios.post('AddressObservations/crud', payload);
+    await axios.post('AddressObservations/crud', cleanPayload(payload));
     notes.value = [];
     deletes.value = [];
 };
+
+function cleanPayload(payload) {
+    ['creates', 'deletes', 'updates'].forEach((prop) => {
+        if (prop === 'creates' || prop === 'updates') {
+            payload[prop] = payload[prop].filter(
+                (item) => item.description !== '' && item.observationTypeFk !== '',
+            );
+        } else {
+            payload[prop] = payload[prop].filter(
+                (item) => item !== null && item !== undefined,
+            );
+        }
+    });
+    return payload;
+}
+
 async function updateAll({ data, payload }) {
     await updateObservations(payload);
     await updateAddress(data);
diff --git a/src/pages/Customer/components/CustomerSummaryTable.vue b/src/pages/Customer/components/CustomerSummaryTable.vue
index 09c7e714c57..feb13706583 100644
--- a/src/pages/Customer/components/CustomerSummaryTable.vue
+++ b/src/pages/Customer/components/CustomerSummaryTable.vue
@@ -191,7 +191,7 @@ const getItemPackagingType = (ticketSales) => {
         :without-header="true"
         auto-load
         :row-click="rowClick"
-        order="shipped DESC, id"
+        order="shipped DESC, id DESC"
         :disable-option="{ card: true, table: true }"
         class="full-width"
         :disable-infinite-scroll="true"
diff --git a/src/pages/InvoiceIn/Card/InvoiceInDescriptor.vue b/src/pages/InvoiceIn/Card/InvoiceInDescriptor.vue
index e8df27511fd..c5d79b0456e 100644
--- a/src/pages/InvoiceIn/Card/InvoiceInDescriptor.vue
+++ b/src/pages/InvoiceIn/Card/InvoiceInDescriptor.vue
@@ -22,7 +22,7 @@ const routes = reactive({
     getSupplier: (id) => {
         return { name: 'SupplierCard', params: { id } };
     },
-    getTickets: (id) => {
+    getInvoices: (id) => {
         return {
             name: 'InvoiceInList',
             query: {
@@ -131,11 +131,11 @@ async function setInvoiceCorrection(id) {
                 </QBtn>
                 <QBtn
                     size="md"
-                    icon="vn:ticket"
+                    icon="vn:invoice-in"
                     color="primary"
-                    :to="routes.getTickets(entity.supplierFk)"
+                    :to="routes.getInvoices(entity.supplierFk)"
                 >
-                    <QTooltip>{{ t('globals.ticketList') }}</QTooltip>
+                    <QTooltip>{{ t('invoiceIn.descriptor.invoices') }}</QTooltip>
                 </QBtn>
                 <QBtn
                     v-if="
diff --git a/src/pages/InvoiceIn/locale/en.yml b/src/pages/InvoiceIn/locale/en.yml
index d341c0aa7a8..a7a8d24693d 100644
--- a/src/pages/InvoiceIn/locale/en.yml
+++ b/src/pages/InvoiceIn/locale/en.yml
@@ -15,6 +15,7 @@ invoiceIn:
         amount: Amount
     descriptor:
         ticketList: Ticket list
+        invoices: Supplier invoices
     descriptorMenu:
         book: Book
         unbook: Unbook
diff --git a/src/pages/InvoiceIn/locale/es.yml b/src/pages/InvoiceIn/locale/es.yml
index c53d227fe24..c593f5a0866 100644
--- a/src/pages/InvoiceIn/locale/es.yml
+++ b/src/pages/InvoiceIn/locale/es.yml
@@ -14,7 +14,7 @@ invoiceIn:
         awb: AWB
         amount: Importe
     descriptor:
-        ticketList: Listado de tickets
+        invoices: Facturas de proveedor
     descriptorMenu:
         book: Contabilizar
         unbook: Descontabilizar
diff --git a/src/pages/Monitor/Ticket/MonitorTicketFilter.vue b/src/pages/Monitor/Ticket/MonitorTicketFilter.vue
index aea47aa0862..1cadd4cb489 100644
--- a/src/pages/Monitor/Ticket/MonitorTicketFilter.vue
+++ b/src/pages/Monitor/Ticket/MonitorTicketFilter.vue
@@ -198,7 +198,7 @@ const getLocale = (label) => {
                 <QItemSection>
                     <VnSelect
                         dense
-                        rounded
+                        filled
                         :label="t('globals.params.packing')"
                         v-model="params.packing"
                         url="ItemPackingTypes"
diff --git a/src/pages/Ticket/Card/TicketSale.vue b/src/pages/Ticket/Card/TicketSale.vue
index c5f7d58561b..a613f905ac2 100644
--- a/src/pages/Ticket/Card/TicketSale.vue
+++ b/src/pages/Ticket/Card/TicketSale.vue
@@ -1,5 +1,5 @@
 <script setup>
-import { onMounted, ref, computed, watch } from 'vue';
+import { onMounted, ref, computed, watch, inject } from 'vue';
 import { useI18n } from 'vue-i18n';
 import { useRouter, useRoute } from 'vue-router';
 import { useQuasar } from 'quasar';
@@ -25,7 +25,7 @@ import VnTable from 'src/components/VnTable/VnTable.vue';
 import VnConfirm from 'src/components/ui/VnConfirm.vue';
 import TicketProblems from 'src/components/TicketProblems.vue';
 import RightMenu from 'src/components/common/RightMenu.vue';
-
+const app = inject('app');
 const route = useRoute();
 const router = useRouter();
 const { t } = useI18n();
@@ -196,13 +196,17 @@ const changeQuantity = async (sale) => {
     if (!sale.itemFk || sale.quantity == null || sale?.originalQuantity === sale.quantity)
         return;
     else sale.originalQuantity = sale.quantity;
-    if (!sale.id) return addSale(sale);
+    try {
+        if (!sale.id) await addSale(sale);
+    } catch (e) {
+        app.config.errorHandler(e);
+        return;
+    }
 
     if (await isSalePrepared(sale)) {
         await confirmUpdate(() => updateQuantity(sale));
     } else await updateQuantity(sale);
 };
-
 const updateQuantity = async (sale) => {
     try {
         let { quantity, id } = sale;
@@ -215,7 +219,7 @@ const updateQuantity = async (sale) => {
             (s) => s.id === sale.id,
         );
         sale.quantity = quantity;
-        throw e;
+        app.config.errorHandler(e);
     }
 };
 
@@ -224,24 +228,27 @@ const addSale = async (sale) => {
         barcode: sale.itemFk,
         quantity: sale.quantity,
     };
+    try {
+        const { data } = await axios.post(`tickets/${route.params.id}/addSale`, params);
 
-    const { data } = await axios.post(`tickets/${route.params.id}/addSale`, params);
+        if (!data) return;
 
-    if (!data) return;
+        const newSale = data;
+        sale.id = newSale.id;
+        sale.image = newSale.item.image;
+        sale.subName = newSale.item.subName;
+        sale.concept = newSale.concept;
+        sale.quantity = newSale.quantity;
+        sale.discount = newSale.discount;
+        sale.price = newSale.price;
+        sale.item = newSale.item;
 
-    const newSale = data;
-    sale.id = newSale.id;
-    sale.image = newSale.item.image;
-    sale.subName = newSale.item.subName;
-    sale.concept = newSale.concept;
-    sale.quantity = newSale.quantity;
-    sale.discount = newSale.discount;
-    sale.price = newSale.price;
-    sale.item = newSale.item;
-
-    notify('globals.dataSaved', 'positive');
-    sale.isNew = false;
-    resetChanges();
+        notify('globals.dataSaved', 'positive');
+        sale.isNew = false;
+        resetChanges();
+    } catch (e) {
+        app.config.errorHandler(e);
+    }
 };
 const changeConcept = async (sale) => {
     if (await isSalePrepared(sale)) {
@@ -250,10 +257,14 @@ const changeConcept = async (sale) => {
 };
 
 const updateConcept = async (sale) => {
-    const data = { newConcept: sale.concept };
-    await axios.post(`Sales/${sale.id}/updateConcept`, data);
-    notify('globals.dataSaved', 'positive');
-    resetChanges();
+    try {
+        const data = { newConcept: sale.concept };
+        await axios.post(`Sales/${sale.id}/updateConcept`, data);
+        notify('globals.dataSaved', 'positive');
+        resetChanges();
+    } catch (e) {
+        app.config.errorHandler(e);
+    }
 };
 
 const DEFAULT_EDIT = {
@@ -264,18 +275,6 @@ const DEFAULT_EDIT = {
     oldQuantity: null,
 };
 const edit = ref({ ...DEFAULT_EDIT });
-const usesMana = ref(null);
-
-const getUsesMana = async () => {
-    const { data } = await axios.get('Sales/usesMana');
-    usesMana.value = data;
-};
-
-const getMana = async () => {
-    const { data } = await axios.get(`Tickets/${route.params.id}/getDepartmentMana`);
-    mana.value = data;
-    await getUsesMana();
-};
 
 const selectedValidSales = computed(() => {
     if (!sales.value) return;
@@ -312,11 +311,15 @@ const changePrice = async (sale) => {
     }
 };
 const updatePrice = async (sale, newPrice) => {
-    await axios.post(`Sales/${sale.id}/updatePrice`, { newPrice });
-    sale.price = newPrice;
-    edit.value = { ...DEFAULT_EDIT };
-    notify('globals.dataSaved', 'positive');
-    resetChanges();
+    try {
+        await axios.post(`Sales/${sale.id}/updatePrice`, { newPrice });
+        sale.price = newPrice;
+        edit.value = { ...DEFAULT_EDIT };
+        notify('globals.dataSaved', 'positive');
+        resetChanges();
+    } catch (e) {
+        app.config.errorHandler(e);
+    }
 };
 
 const changeDiscount = async (sale) => {
@@ -339,15 +342,20 @@ const updateDiscounts = async (sales, newDiscount) => {
 };
 
 const updateDiscount = async (sales, newDiscount = 0) => {
-    const salesIds = sales.map(({ id }) => id);
-    const params = {
-        salesIds,
-        newDiscount,
-        manaCode: manaCode.value,
-    };
-    await axios.post(`Tickets/${route.params.id}/updateDiscount`, params);
-    notify('globals.dataSaved', 'positive');
-    resetChanges();
+    try {
+        const salesIds = sales.map(({ id }) => id);
+        const params = {
+            salesIds,
+            newDiscount,
+            manaCode: manaCode.value,
+        };
+        await axios.post(`Tickets/${route.params.id}/updateDiscount`, params);
+        notify('globals.dataSaved', 'positive');
+        resetChanges();
+    } catch (e) {
+        app.config.errorHandler(e);
+        return;
+    }
 };
 
 const getNewPrice = computed(() => {
@@ -369,11 +377,15 @@ const getNewPrice = computed(() => {
 });
 
 const newOrderFromTicket = async () => {
-    const { data } = await axios.post(`Orders/newFromTicket`, {
-        ticketFk: Number(route.params.id),
-    });
-    const routeData = router.resolve({ name: 'OrderCatalog', params: { id: data } });
-    window.open(routeData.href, '_blank');
+    try {
+        const { data } = await axios.post(`Orders/newFromTicket`, {
+            ticketFk: Number(route.params.id),
+        });
+        const routeData = router.resolve({ name: 'OrderCatalog', params: { id: data } });
+        window.open(routeData.href, '_blank');
+    } catch (e) {
+        app.config.errorHandler(e);
+    }
 };
 
 const goToLog = (saleId) => {
@@ -390,11 +402,15 @@ const goToLog = (saleId) => {
 };
 
 const changeTicketState = async (val) => {
-    stateBtnDropdownRef.value.hide();
-    const params = { ticketFk: route.params.id, code: val };
-    await axios.post('Tickets/state', params);
-    notify('globals.dataSaved', 'positive');
-    resetChanges();
+    try {
+        stateBtnDropdownRef.value.hide();
+        const params = { ticketFk: route.params.id, code: val };
+        await axios.post('Tickets/state', params);
+        notify('globals.dataSaved', 'positive');
+        resetChanges();
+    } catch (e) {
+        app.config.errorHandler(e);
+    }
 };
 
 const removeSelectedSales = () => {
@@ -414,10 +430,14 @@ const removeSales = async () => {
         .forEach((sale) => tableRef.value.CrudModelRef.formData.splice(sale.$index, 1));
 
     if (params.sales.length == 0) return;
-    await axios.post('Sales/deleteSales', params);
-    removeSelectedSales();
-    notify('globals.dataSaved', 'positive');
-    resetChanges();
+    try {
+        await axios.post('Sales/deleteSales', params);
+        removeSelectedSales();
+        notify('globals.dataSaved', 'positive');
+        resetChanges();
+    } catch (e) {
+        app.config.errorHandler(e);
+    }
 };
 
 const setTransferParams = async () => {
diff --git a/src/pages/Travel/ExtraCommunity.vue b/src/pages/Travel/ExtraCommunity.vue
index ec898719dc3..849eeee5bf4 100644
--- a/src/pages/Travel/ExtraCommunity.vue
+++ b/src/pages/Travel/ExtraCommunity.vue
@@ -505,7 +505,6 @@ watch(route, () => {
                         :props="props"
                         @click="stopEventPropagation($event, col)"
                         :style="col.style"
-                        style="padding-left: 5px"
                     >
                         <component
                             :is="tableColumnComponents[col.name].component"
@@ -581,19 +580,20 @@ watch(route, () => {
                         <QBtn dense flat class="link">{{ entry.id }} </QBtn>
                         <EntryDescriptorProxy :id="entry.id" />
                     </QTd>
-                    <QTd>
-                        <QBtn flat class="link" dense>{{ entry.supplierName }}</QBtn>
-                        <SupplierDescriptorProxy :id="entry.supplierFk" />
-                    </QTd>
-                    <QTd class="text-center">
-                        <QIcon
-                            v-if="entry.isCustomInspectionRequired"
-                            name="warning"
-                            color="negative"
-                            size="md"
-                            :title="t('extraCommunity.requiresInspection')"
-                        >
-                        </QIcon>
+                    <QTd :colspan="2">
+                        <div style="display: flex">
+                            <span class="link">
+                                {{ entry.supplierName }}
+                                <SupplierDescriptorProxy :id="entry.supplierFk" />
+                            </span>
+                            <QIcon
+                                v-if="entry.isCustomInspectionRequired"
+                                name="warning"
+                                color="negative"
+                                size="md"
+                                :title="t('extraCommunity.requiresInspection')"
+                            />
+                        </div>
                     </QTd>
                     <QTd class="text-right">
                         <span>{{ toCurrency(entry.invoiceAmount) }}</span>
@@ -639,9 +639,7 @@ watch(route, () => {
         &:nth-child(1) {
             max-width: 65px;
         }
-        &:nth-child(4) {
-            padding: 0;
-        }
+        padding: 0 5px 0;
     }
     thead > tr > th {
         padding: 3px;
diff --git a/src/pages/Worker/Card/WorkerSummary.vue b/src/pages/Worker/Card/WorkerSummary.vue
index 40787613c00..1da2b7d1188 100644
--- a/src/pages/Worker/Card/WorkerSummary.vue
+++ b/src/pages/Worker/Card/WorkerSummary.vue
@@ -94,7 +94,7 @@ onBeforeMount(async () => {
                             </template>
                         </VnLv>
                     </div>
-                    <div class="vn-card-content">
+                    <div class="vn-card-content" v-if="advancedSummary">
                         <VnLv
                             :label="t('worker.summary.fiDueDate')"
                             :value="toDate(advancedSummary.fiDueDate)"
diff --git a/test/cypress/integration/invoiceIn/invoiceInDescriptor.spec.js b/test/cypress/integration/invoiceIn/invoiceInDescriptor.spec.js
index fdaa0187666..7058e154ca7 100644
--- a/test/cypress/integration/invoiceIn/invoiceInDescriptor.spec.js
+++ b/test/cypress/integration/invoiceIn/invoiceInDescriptor.spec.js
@@ -13,7 +13,7 @@ describe('InvoiceInDescriptor', () => {
             cy.validateCheckbox(checkbox, false);
         });
 
-        it.skip('should delete the invoice properly', () => {
+        it('should delete the invoice properly', () => {
             cy.visit('/#/invoice-in/2/summary');
             cy.selectDescriptorOption(2);
             cy.clickConfirm();
diff --git a/test/cypress/integration/vnComponent/VnShortcut.spec.js b/test/cypress/integration/vnComponent/VnShortcut.spec.js
index fa05e2e3d2c..cc5cacbe41d 100644
--- a/test/cypress/integration/vnComponent/VnShortcut.spec.js
+++ b/test/cypress/integration/vnComponent/VnShortcut.spec.js
@@ -1,6 +1,6 @@
 /// <reference types="cypress" />
-
-describe('VnShortcuts', () => {
+// https://redmine.verdnatura.es/issues/8848
+describe.skip('VnShortcuts', () => {
     const modules = {
         item: 'a',
         customer: 'c',
diff --git a/test/cypress/integration/worker/workerList.spec.js b/test/cypress/integration/worker/workerList.spec.js
index 0a45441c141..d964c3dc824 100644
--- a/test/cypress/integration/worker/workerList.spec.js
+++ b/test/cypress/integration/worker/workerList.spec.js
@@ -1,4 +1,5 @@
-describe('WorkerList', () => {
+// https://redmine.verdnatura.es/issues/8848
+describe.skip('WorkerList', () => {
     const inputName = '.q-drawer .q-form input[aria-label="First Name"]';
     const searchBtn = '.q-drawer button:nth-child(3)';
     const descriptorTitle = '.descriptor .title span';
@@ -13,7 +14,7 @@ describe('WorkerList', () => {
         cy.intercept('GET', /\/api\/Workers\/summary+/).as('worker');
         cy.get(searchBtn).click();
         cy.wait('@worker').then(() =>
-            cy.get(descriptorTitle).should('include.text', 'Jessica')
+            cy.get(descriptorTitle).should('include.text', 'Jessica'),
         );
     });
 });