diff --git a/src/pages/Ecomerce/CatalogCard.vue b/src/pages/Ecomerce/CatalogCard.vue
index 9c93495b..0e795c2f 100644
--- a/src/pages/Ecomerce/CatalogCard.vue
+++ b/src/pages/Ecomerce/CatalogCard.vue
@@ -37,7 +37,7 @@ const { t } = useI18n();
         >
             <div class="column" style="margin-bottom: auto">
                 <div class="text-subtitle2 ellipsis-2-lines">
-                    {{ item.item }}
+                    {{ item.name }}
                 </div>
                 <div
                     class="row justify-between text-uppercase text-subtitle1 text-grey-7"
@@ -76,7 +76,7 @@ const { t } = useI18n();
             </div>
             <div class="row justify-between items-cente q-gutter-x-xs">
                 <QBadge
-                    :label="`x${item.grouping}`"
+                    :label="`x${item?.prices[0]?.grouping}`"
                     color="grey-4"
                     class="col-2 justify-end text-body2"
                 >
diff --git a/src/pages/Ecomerce/CatalogView.vue b/src/pages/Ecomerce/CatalogView.vue
index a5fe7c11..07a1d12b 100644
--- a/src/pages/Ecomerce/CatalogView.vue
+++ b/src/pages/Ecomerce/CatalogView.vue
@@ -92,7 +92,7 @@
                             @click="selectedCategory = cat.id"
                             data-cy="catalogCategoryButton"
                         >
-                            <img :src="`statics/category/${cat.code}.svg`" />
+                            <img :src="`statics/category/${cat.icon}.svg`" />
                             <QTooltip>{{ cat.name }}</QTooltip>
                         </QBtn>
                     </div>
@@ -577,38 +577,26 @@ const getItems = async () => {
         if (!basketOrderId.value || !isSomeFilterSelected.value) return;
         loading.value = true;
 
-        const res = await jApi.execQuery(
-            `DROP TEMPORARY TABLE IF EXISTS tmp.item;
-            CREATE TEMPORARY TABLE tmp.item
-            (INDEX (itemFk))
-            ENGINE = MEMORY
-            SELECT i.id itemFk
-            FROM vn.item i
-            JOIN vn.itemType t ON t.id = i.typeFk
-            WHERE (${queryFilter.value});
-            CALL myOrder_calcCatalogFull(#orderId);
-            SELECT i.id, i.longName item, i.subName,
-            i.tag5, i.value5, i.tag6, i.value6,
-            i.tag7, i.value7, i.tag8, i.value8,
-            i.relevancy, i.size, i.category, b.minQuantity,
-            k.name ink, p.name producer, o.name origin,
-            b.available, b.price, b.grouping,
-            i.image, im.updated
-            FROM tmp.ticketCalculateItem b
-            JOIN vn.item i ON i.id = b.itemFk
-            LEFT JOIN vn.ink k ON k.id = i.inkFk
-            LEFT JOIN vn.producer p ON p.id = i.producerFk
-            LEFT JOIN vn.origin o ON o.id = i.originFk
-            LEFT JOIN image im ON im.collectionFk = 'catalog'
-            AND im.name = i.image
-            WHERE b.available > 0
-            ORDER BY ${selectedOrderBy.value}
-            LIMIT 5000;
-            DROP TEMPORARY TABLE tmp.item;
-            CALL vn.ticketCalculatePurge();`,
-            { orderId: basketOrderId.value }
-        );
-        items.value = res.results[3].data;
+        const { data } = await api.get('Orders/catalogFilter', {
+            params: {
+                orderFk: basketOrderId.value,
+                orderBy: JSON.stringify({
+                    field: 'relevancy DESC, name',
+                    way: 'ASC',
+                    isTag: false
+                }),
+                filter: {
+                    where: {
+                        and: [
+                            { typeFk: selectedType.value },
+                            { categoryFk: selectedCategory.value }
+                        ]
+                    }
+                }
+            }
+        });
+
+        items.value = data;
         await onItemsFetched();
         loading.value = false;
     } catch (error) {
@@ -623,7 +611,6 @@ const getOrder = async () => {
     try {
         if (!basketOrderId.value) return;
 
-        order.value = data;
         const filter = {
             include: [
                 {
@@ -645,6 +632,8 @@ const getOrder = async () => {
                 orderFk: basketOrderId.value
             }
         });
+
+        order.value = data;
     } catch (error) {
         console.error('Error getting order:', error);
     }
@@ -652,13 +641,25 @@ const getOrder = async () => {
 
 const getCategories = async () => {
     try {
-        categories.value = await jApi.query(
-            `SELECT c.id, l.name, c.color, c.code
-            FROM vn.itemCategory c
-            JOIN vn.itemCategoryL10n l ON l.id = c.id
-            WHERE c.display
-            ORDER BY display`
-        );
+        const { data } = await api.get('itemCategories', {
+            params: {
+                filter: JSON.stringify({
+                    order: 'display ASC',
+                    include: {
+                        relation: 'itemTypes',
+                        scope: {
+                            fields: ['code', 'name']
+                        }
+                    }
+                })
+            }
+        });
+        categories.value = data.map(category => {
+            return {
+                ...category,
+                icon: category.icon.split('-')[1]
+            };
+        });
     } catch (error) {
         console.error('Error getting categories:', error);
     }
@@ -667,23 +668,15 @@ const getCategories = async () => {
 const getItemFamilies = async () => {
     try {
         if (!selectedCategory.value || !basketOrderId.value) return;
-        const res = await jApi.execQuery(
-            `CALL myOrder_getAvailable(#orderId);
-            SELECT DISTINCT t.id, l.name
-            FROM vn.item i
-            JOIN vn.itemType t ON t.id = i.typeFk
-            JOIN tmp.itemAvailable a ON a.id = i.id
-            JOIN vn.itemTypeL10n l ON l.id = t.id
-            WHERE t.order >= 0
-            AND t.categoryFk = #category
-            ORDER BY t.order, l.name ASC;
-            DROP TEMPORARY TABLE tmp.itemAvailable`,
+
+        const { data } = await api.get(
+            `Orders/${basketOrderId.value}/getItemTypeAvailable`,
             {
-                category: selectedCategory.value,
-                orderId: basketOrderId.value
+                params: { itemCategoryId: selectedCategory.value }
             }
         );
-        itemFamilies.value = res.results[1].data;
+
+        itemFamilies.value = data;
     } catch (error) {
         console.error('Error getting available items:', error);
     }
@@ -706,7 +699,19 @@ const getItemColors = async () => {
                 orderId: basketOrderId.value
             }
         );
+
+        // const { data } = await api.get('Inks', {
+        //     params: {
+        //         filter: JSON.stringify({
+        //             where: {
+        //                 't.categoryFk': selectedCategory.value
+        //             }
+        //         })
+        //     }
+        // });
+        // console.log('ink data: ', data);
         itemColors.value = res.results[1].data;
+        // console.log('itemColors: ', itemColors.value);
     } catch (error) {
         console.error('Error getting available items:', error);
     }
@@ -815,19 +820,30 @@ const onCategoryChange = () => {
 
 const getItemTags = async itemFk => {
     try {
-        const tags = await jApi.query(
-            `SELECT l.name, it.value
-            FROM vn.itemTag it
-            JOIN vn.tag t ON t.id = it.tagFk
-            JOIN vn.tagL10n l ON l.id = t.id
-            WHERE it.itemFk = #itemFk
-            AND priority >= 0
-            ORDER BY it.priority`,
-            {
-                itemFk
+        const { data } = await api.get('ItemTags', {
+            params: {
+                filter: JSON.stringify({
+                    where: {
+                        itemFk
+                    },
+                    include: [
+                        {
+                            relation: 'tag',
+                            scope: {
+                                fields: ['name']
+                            }
+                        }
+                    ]
+                })
             }
-        );
-        return tags;
+        });
+
+        return data.map(tag => {
+            return {
+                name: tag?.tag?.name,
+                value: tag.value
+            };
+        });
     } catch (error) {
         console.error('Error getting available items:', error);
     }