catalog view migration
gitea/hedera-web/pipeline/pr-dev There was a failure building this commit Details
gitea/hedera-web/pipeline/pr-beta This commit looks good Details

This commit is contained in:
William Buezas 2025-04-09 10:26:34 +02:00
parent a1b54d50b5
commit ad767ecd2b
2 changed files with 78 additions and 107 deletions

View File

@ -45,6 +45,8 @@ async function fetch({
});
}
params.filter = params.filter || {};
if (params.filter?.where || exprFilter) {
params.filter.where = { ...params.filter.where, ...exprFilter };
}

View File

@ -210,7 +210,7 @@
/>
<div class="column">
<div class="text-subtitle2">
{{ selectedItem.item }}
{{ selectedItem.name }}
</div>
<span
class="text-subtitle2 text-grey-7 text-uppercase"
@ -326,6 +326,7 @@ import { storeToRefs } from 'pinia';
import { formatDateTitle, currency } from 'src/lib/filters.js';
import useNotify from 'src/composables/useNotify.js';
import debounce from 'src/utils/debouncer.js';
import { fetch } from 'src/composables/serviceUtils';
const jApi = inject('jApi');
const api = inject('api');
@ -627,28 +628,33 @@ const getFilters = async () => {
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'
);
}