From ad767ecd2b6cd4c7354968e14f6bc7660e66cc69 Mon Sep 17 00:00:00 2001 From: wbuezas Date: Wed, 9 Apr 2025 10:26:34 +0200 Subject: [PATCH] catalog view migration --- src/composables/serviceUtils.js | 2 + src/pages/Ecomerce/CatalogView.vue | 183 ++++++++++++----------------- 2 files changed, 78 insertions(+), 107 deletions(-) diff --git a/src/composables/serviceUtils.js b/src/composables/serviceUtils.js index ce124398..d1c27a3c 100644 --- a/src/composables/serviceUtils.js +++ b/src/composables/serviceUtils.js @@ -45,6 +45,8 @@ async function fetch({ }); } + params.filter = params.filter || {}; + if (params.filter?.where || exprFilter) { params.filter.where = { ...params.filter.where, ...exprFilter }; } diff --git a/src/pages/Ecomerce/CatalogView.vue b/src/pages/Ecomerce/CatalogView.vue index 3e8e959d..915c34cf 100644 --- a/src/pages/Ecomerce/CatalogView.vue +++ b/src/pages/Ecomerce/CatalogView.vue @@ -210,7 +210,7 @@ />
- {{ selectedItem.item }} + {{ selectedItem.name }}
{ await Promise.allSettled(promises); }; +const getItemExprBuilder = (param, value) => { + if (param === 'orderFk' || param === 'orderBy') return; + else return { [param]: value }; +}; + const getItems = async () => { try { if (!basketOrderId.value || !isSomeFilterSelected.value) return; loading.value = true; - const { data } = await api.get('Orders/catalogFilter', { - params: { - orderFk: basketOrderId.value, - orderBy: JSON.stringify({ - field: selectedOrderBy.value.field, - way: selectedOrderBy.value.way, - isTag: selectedOrderBy.value.isTag - }), - filter: { - where: { - and: [ - { typeFk: selectedType.value }, - { categoryFk: selectedCategory.value } - ] - } - } - } + const params = { + orderFk: basketOrderId.value, + orderBy: JSON.stringify({ + field: selectedOrderBy.value.field, + way: selectedOrderBy.value.way, + isTag: selectedOrderBy.value.isTag + }), + typeFk: selectedType.value, + categoryFk: selectedCategory.value, + inkFk: selectedColor.value, + producerFk: selectedProducer.value, + originFk: selectedOrigin.value + }; + const { data } = await fetch({ + url: 'Orders/catalogFilter', + params, + exprBuilder: getItemExprBuilder }); items.value = data; @@ -740,35 +746,17 @@ const getItemFamilies = async () => { const getItemColors = async () => { try { if (!selectedCategory.value || !basketOrderId.value) return; - const res = await jApi.execQuery( - `CALL myOrder_getAvailable(#orderId); - SELECT DISTINCT l.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.inkL10n l ON l.id = i.inkFk - WHERE (${queryFilter.value}) - ORDER BY name ASC; - DROP TEMPORARY TABLE tmp.itemAvailable;`, - { - 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); + const { data } = await api.get('Orders/getItemsColorsAvailable', { + params: { + orderId: basketOrderId.value, + whereFilter: queryFilter.value + } + }); + + itemColors.value = data; } catch (error) { - console.error('Error getting available items:', error); + console.error('Error getting items colors:', error); } }; @@ -785,59 +773,45 @@ const onItemsFetched = async () => { const getProducers = async () => { try { - const res = await jApi.execQuery( - `CALL myOrder_getAvailable(#orderId); - SELECT DISTINCT p.id, p.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.producer p ON p.id = i.producerFk - WHERE (${queryFilter.value}) - ORDER BY name ASC; - DROP TEMPORARY TABLE tmp.itemAvailable;`, - { orderId: basketOrderId.value } - ); - itemProducers.value = res.results[1].data; + const { data } = await api.get('Orders/getItemsProducersAvailable', { + params: { + orderId: basketOrderId.value, + whereFilter: queryFilter.value + } + }); + itemProducers.value = data; } catch (error) { - console.error('Error getting productors:', error); + console.error('Error getting producers:', error); } }; const getOrigins = async () => { try { - const res = await jApi.execQuery( - `CALL myOrder_getAvailable(#orderId); - SELECT DISTINCT o.id, l.name, o.code - FROM vn.item i - JOIN vn.itemType t ON t.id = i.typeFk - JOIN tmp.itemAvailable a ON a.id = i.id - JOIN vn.origin o ON o.id = i.originFk - JOIN vn.originL10n l ON l.id = o.id - WHERE (${queryFilter.value}) - ORDER BY name ASC; - DROP TEMPORARY TABLE tmp.itemAvailable;`, - { orderId: basketOrderId.value } - ); - itemOrigins.value = res.results[1].data; + const { data } = await api.get('Orders/getItemsOriginsAvailable', { + params: { + orderId: basketOrderId.value, + whereFilter: queryFilter.value + } + }); + itemOrigins.value = data; } catch (error) { - console.error('Error getting productors:', error); + console.error('Error getting origins:', error); } }; const getSubcategories = async () => { try { - const res = await jApi.execQuery( - `CALL myOrder_getAvailable(#orderId); - SELECT DISTINCT i.category - FROM vn.item i - JOIN vn.itemType t ON t.id = i.typeFk - JOIN tmp.itemAvailable a ON a.id = i.id - WHERE (${queryFilter.value}) - ORDER BY category ASC; - DROP TEMPORARY TABLE tmp.itemAvailable;`, - { orderId: basketOrderId.value } + const { data } = await api.get( + 'Orders/getItemsSubcategoriesAvailable', + { + params: { + orderId: basketOrderId.value, + whereFilter: queryFilter.value + } + } ); - const filtered = res.results[1].data.filter(item => item.category); + + const filtered = data.filter(item => item.category); itemSubcategories.value = filtered.map(i => i.category); } catch (error) { console.error('Error getting subcategories:', error); @@ -906,23 +880,13 @@ const getItemTags = async itemFk => { const calcItem = async itemId => { try { - const res = await jApi.execQuery( - `CALL myOrder_calcCatalogFromItem(#orderId, #itemId); - SELECT l.warehouseFk, w.name warehouse, p.grouping, - p.price, p.priceKg, p.rate, l.available - FROM tmp.ticketLot l - JOIN tmp.ticketComponentPrice p ON p.warehouseFk = l.warehouseFk - JOIN vn.warehouse w ON w.id = p.warehouseFk - ORDER BY warehouseFk, grouping; - DROP TEMPORARY TABLE - tmp.ticketCalculateItem, - tmp.ticketComponentPrice, - tmp.ticketComponent, - tmp.ticketLot, - tmp.zoneGetShipped;`, - { orderId: basketOrderId.value, itemId } - ); - return res.results[1].data; + const { data } = await api.get('Orders/getCalcFromItem', { + params: { + orderId: basketOrderId.value, + itemId + } + }); + return data; } catch (error) { console.error('Error getting items:', error); } @@ -962,10 +926,15 @@ const resetAmounts = () => { const addItemToOrder = async params => { try { - await jApi.execQuery( - `CALL myOrder_addItem(#orderId, #warehouse, #item, #amount);`, - params - ); + await api.post('applications/myOrder_addItem/execute-proc', { + schema: 'hedera', + params: [ + params.orderId, + params.warehouse, + params.item, + params.amount + ] + }); } catch (error) { console.error('Error adding item to basket:', error); throw error; @@ -993,7 +962,7 @@ const onConfirmClick = async params => { if (amountSum > 0) { await Promise.all(addItemPromises); notify( - `${t('added')} ${amountSum} ${selectedItem.value.item}`, + `${t('added')} ${amountSum} ${selectedItem.value.name}`, 'positive' ); }