diff --git a/src/pages/Department/Card/DepartmentDescriptor.vue b/src/pages/Department/Card/DepartmentDescriptor.vue
index e08495faf96..b219ccfe12c 100644
--- a/src/pages/Department/Card/DepartmentDescriptor.vue
+++ b/src/pages/Department/Card/DepartmentDescriptor.vue
@@ -106,7 +106,7 @@ const { openConfirmationModal } = useVnConfirm();
                     :to="{
                         name: 'WorkerList',
                         query: {
-                            params: JSON.stringify({ departmentFk: entityId }),
+                            table: JSON.stringify({ departmentFk: entityId }),
                         },
                     }"
                 >
diff --git a/src/pages/Item/Card/ItemDiary.vue b/src/pages/Item/Card/ItemDiary.vue
index 96a003a095b..c2f2c19a020 100644
--- a/src/pages/Item/Card/ItemDiary.vue
+++ b/src/pages/Item/Card/ItemDiary.vue
@@ -1,7 +1,7 @@
 <script setup>
-import { onMounted, computed, reactive, ref, nextTick, watch } from 'vue';
+import { onMounted, computed, ref, nextTick } from 'vue';
 import { useI18n } from 'vue-i18n';
-import { useRoute, useRouter } from 'vue-router';
+import { useRoute } from 'vue-router';
 
 import TicketDescriptorProxy from 'src/pages/Ticket/Card/TicketDescriptorProxy.vue';
 import EntryDescriptorProxy from 'src/pages/Entry/Card/EntryDescriptorProxy.vue';
@@ -22,19 +22,16 @@ import VnSubToolbar from 'components/ui/VnSubToolbar.vue';
 
 const { t } = useI18n();
 const route = useRoute();
-const router = useRouter();
 const state = useState();
 const user = state.getUser();
-const today = ref(Date.vnNew());
+const today = Date.vnNew();
+today.setHours(0, 0, 0, 0);
 const warehousesOptions = ref([]);
-const itemBalancesRef = ref(null);
-const itemsBalanceFilter = reactive({
-    where: { itemFk: route.params.id, warehouseFk: null, date: null },
-});
-const itemBalances = ref([]);
-const warehouseFk = ref(null);
-const _showWhatsBeforeInventory = ref(false);
+const itemBalances = computed(() => arrayDataItemBalances.store.data);
+const where = computed(() => arrayDataItemBalances.store.filter.where || {});
+const showWhatsBeforeInventory = ref(false);
 const inventoriedDate = ref(null);
+let arrayDataItemBalances = useArrayData('ItemBalances');
 
 const originTypeMap = {
     entry: {
@@ -122,36 +119,28 @@ const columns = computed(() => [
     },
 ]);
 
-const showWhatsBeforeInventory = computed({
-    get: () => _showWhatsBeforeInventory.value,
-    set: (val) => {
-        _showWhatsBeforeInventory.value = val;
-        if (!val) itemsBalanceFilter.where.date = null;
-        else itemsBalanceFilter.where.date = inventoriedDate.value ?? new Date();
-    },
-});
-
 onMounted(async () => {
-    today.value.setHours(0, 0, 0, 0);
-    if (route.query.warehouseFk) warehouseFk.value = route.query.warehouseFk;
-    else if (user.value) warehouseFk.value = user.value.warehouseFk;
-    itemsBalanceFilter.where.warehouseFk = warehouseFk.value;
-    const { data } = await axios.get('Configs/findOne');
-    inventoriedDate.value = data.inventoried;
+    const ref = where.value;
+    const query = route.query;
+    inventoriedDate.value =
+        (await axios.get('Configs/findOne')).data?.inventoried || today;
+
+    if (query.warehouseFk) ref.warehouseFk = query.warehouseFk;
+    else if (!ref.warehouseFk && user.value) ref.warehouseFk = user.value.warehouseFk;
+    if (ref.date) showWhatsBeforeInventory.value = true;
+    ref.itemFk = route.params.id;
+
+    arrayDataItemBalances = useArrayData('ItemBalances', {
+        url: 'Items/getBalance',
+        filter: { where: ref },
+    });
+
     await fetchItemBalances();
     await scrollToToday();
-    await updateWarehouse(warehouseFk.value);
+    await updateWarehouse(ref.warehouseFk);
 });
 
-watch(
-    () => router.currentRoute.value.params.id,
-    (newId) => {
-        itemsBalanceFilter.where.itemFk = newId;
-        itemBalancesRef.value.fetch();
-    }
-);
-
-const fetchItemBalances = async () => await itemBalancesRef.value.fetch();
+const fetchItemBalances = async () => await arrayDataItemBalances.fetch({});
 
 const getBadgeAttrs = (_date) => {
     const isSameDate = date.isSameDate(today.value, _date);
@@ -178,23 +167,13 @@ const formatDateForAttribute = (dateValue) => {
 };
 
 async function updateWarehouse(warehouseFk) {
-    const stock = useArrayData('descriptorStock', {
-        userParams: {
-            warehouseFk,
-        },
-    });
+    const stock = useArrayData('descriptorStock', { userParams: { warehouseFk } });
     await stock.fetch({});
     stock.store.data.itemFk = route.params.id;
 }
 </script>
 
 <template>
-    <FetchData
-        ref="itemBalancesRef"
-        url="Items/getBalance"
-        :filter="itemsBalanceFilter"
-        @on-fetch="(data) => (itemBalances = data)"
-    />
     <FetchData
         url="Warehouses"
         :filter="{ fields: ['id', 'name'], order: 'name ASC' }"
@@ -207,27 +186,30 @@ async function updateWarehouse(warehouseFk) {
                 <VnSelect
                     :label="t('itemDiary.warehouse')"
                     :options="warehousesOptions"
-                    hide-selected
-                    option-label="name"
-                    option-value="id"
-                    dense
-                    v-model="itemsBalanceFilter.where.warehouseFk"
+                    v-model="where.warehouseFk"
                     @update:model-value="
-                        (value) => fetchItemBalances() && updateWarehouse(value)
+                        (val) => fetchItemBalances() && updateWarehouse(val)
                     "
                     class="q-mr-lg"
+                    :is-clearable="false"
                 />
                 <QCheckbox
                     :label="t('itemDiary.showBefore')"
                     v-model="showWhatsBeforeInventory"
-                    @update:model-value="fetchItemBalances"
+                    @update:model-value="
+                        async (val) => {
+                            if (!val) where.date = null;
+                            else where.date = inventoriedDate;
+                            await fetchItemBalances();
+                        }
+                    "
                     class="q-mr-lg"
                 />
                 <VnInputDate
                     v-if="showWhatsBeforeInventory"
                     :label="t('itemDiary.since')"
                     dense
-                    v-model="itemsBalanceFilter.where.date"
+                    v-model="where.date"
                     @update:model-value="fetchItemBalances"
                 />
             </div>
diff --git a/src/pages/Item/Card/ItemLastEntries.vue b/src/pages/Item/Card/ItemLastEntries.vue
index c2df553c3ec..7d8890c2bfb 100644
--- a/src/pages/Item/Card/ItemLastEntries.vue
+++ b/src/pages/Item/Card/ItemLastEntries.vue
@@ -36,18 +36,7 @@ const exprBuilder = (param, value) => {
     }
 };
 
-const where = {
-    itemFk: route.params.id,
-};
-
-const arrayData = useArrayData('ItemLastEntries', {
-    url: 'Items/lastEntriesFilter',
-    order: ['landed DESC', 'buyFk DESC'],
-    exprBuilder: exprBuilder,
-    userFilter: {
-        where: where,
-    },
-});
+let arrayData = useArrayData('ItemLastEntries');
 const itemLastEntries = ref([]);
 
 const columns = computed(() => [
@@ -161,25 +150,51 @@ const getDate = (date, type) => {
 };
 
 const updateFilter = async () => {
-    let filter;
-    if (!from.value && to.value) filter = { lte: to.value };
-    else if (from.value && !to.value) filter = { gte: from.value };
-    else if (from.value && to.value) filter = { between: [from.value, to.value] };
-
-    const userFilter = arrayData.store.userFilter.where;
-
-    userFilter.landed = filter;
+    let landed;
+    if (!from.value && to.value) landed = { lte: to.value };
+    else if (from.value && !to.value) landed = { gte: from.value };
+    else if (from.value && to.value) landed = { between: [from.value, to.value] };
 
+    arrayData.store.filter.where.landed = landed;
     await fetchItemLastEntries();
 };
 
 onMounted(async () => {
-    const _from = Date.vnNew();
-    _from.setDate(_from.getDate() - 75);
-    from.value = getDate(_from, 'from');
-    const _to = Date.vnNew();
-    _to.setDate(_to.getDate() + 10);
-    to.value = getDate(_to, 'to');
+    const landed = arrayData.store.filter.where?.landed;
+    arrayData = useArrayData('ItemLastEntries', {
+        url: 'Items/lastEntriesFilter',
+        order: ['landed DESC', 'buyFk DESC'],
+        exprBuilder: exprBuilder,
+        filter: {
+            where: {
+                itemFk: route.params.id,
+                landed,
+            },
+        },
+    });
+
+    if (landed) {
+        const key = Object.keys(landed)[0];
+        switch (key) {
+            case 'gte':
+                from.value = landed.gte;
+                break;
+            case 'lte':
+                to.value = landed.lte;
+                break;
+            case 'between':
+                from.value = landed.between[0];
+                to.value = landed.between[1];
+                break;
+        }
+    } else {
+        const _from = Date.vnNew();
+        _from.setDate(_from.getDate() - 75);
+        from.value = getDate(_from, 'from');
+        const _to = Date.vnNew();
+        _to.setDate(_to.getDate() + 10);
+        to.value = getDate(_to, 'to');
+    }
 
     updateFilter();