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) { if (params.filter?.where || exprFilter) {
params.filter.where = { ...params.filter.where, ...exprFilter }; params.filter.where = { ...params.filter.where, ...exprFilter };
} }

View File

@ -210,7 +210,7 @@
/> />
<div class="column"> <div class="column">
<div class="text-subtitle2"> <div class="text-subtitle2">
{{ selectedItem.item }} {{ selectedItem.name }}
</div> </div>
<span <span
class="text-subtitle2 text-grey-7 text-uppercase" 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 { formatDateTitle, currency } from 'src/lib/filters.js';
import useNotify from 'src/composables/useNotify.js'; import useNotify from 'src/composables/useNotify.js';
import debounce from 'src/utils/debouncer.js'; import debounce from 'src/utils/debouncer.js';
import { fetch } from 'src/composables/serviceUtils';
const jApi = inject('jApi'); const jApi = inject('jApi');
const api = inject('api'); const api = inject('api');
@ -627,28 +628,33 @@ const getFilters = async () => {
await Promise.allSettled(promises); await Promise.allSettled(promises);
}; };
const getItemExprBuilder = (param, value) => {
if (param === 'orderFk' || param === 'orderBy') return;
else return { [param]: value };
};
const getItems = async () => { const getItems = async () => {
try { try {
if (!basketOrderId.value || !isSomeFilterSelected.value) return; if (!basketOrderId.value || !isSomeFilterSelected.value) return;
loading.value = true; loading.value = true;
const { data } = await api.get('Orders/catalogFilter', { const params = {
params: { orderFk: basketOrderId.value,
orderFk: basketOrderId.value, orderBy: JSON.stringify({
orderBy: JSON.stringify({ field: selectedOrderBy.value.field,
field: selectedOrderBy.value.field, way: selectedOrderBy.value.way,
way: selectedOrderBy.value.way, isTag: selectedOrderBy.value.isTag
isTag: selectedOrderBy.value.isTag }),
}), typeFk: selectedType.value,
filter: { categoryFk: selectedCategory.value,
where: { inkFk: selectedColor.value,
and: [ producerFk: selectedProducer.value,
{ typeFk: selectedType.value }, originFk: selectedOrigin.value
{ categoryFk: selectedCategory.value } };
] const { data } = await fetch({
} url: 'Orders/catalogFilter',
} params,
} exprBuilder: getItemExprBuilder
}); });
items.value = data; items.value = data;
@ -740,35 +746,17 @@ const getItemFamilies = async () => {
const getItemColors = async () => { const getItemColors = async () => {
try { try {
if (!selectedCategory.value || !basketOrderId.value) return; 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', { const { data } = await api.get('Orders/getItemsColorsAvailable', {
// params: { params: {
// filter: JSON.stringify({ orderId: basketOrderId.value,
// where: { whereFilter: queryFilter.value
// 't.categoryFk': selectedCategory.value }
// } });
// })
// } itemColors.value = data;
// });
// console.log('ink data: ', data);
itemColors.value = res.results[1].data;
// console.log('itemColors: ', itemColors.value);
} catch (error) { } 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 () => { const getProducers = async () => {
try { try {
const res = await jApi.execQuery( const { data } = await api.get('Orders/getItemsProducersAvailable', {
`CALL myOrder_getAvailable(#orderId); params: {
SELECT DISTINCT p.id, p.name orderId: basketOrderId.value,
FROM vn.item i whereFilter: queryFilter.value
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 itemProducers.value = data;
WHERE (${queryFilter.value})
ORDER BY name ASC;
DROP TEMPORARY TABLE tmp.itemAvailable;`,
{ orderId: basketOrderId.value }
);
itemProducers.value = res.results[1].data;
} catch (error) { } catch (error) {
console.error('Error getting productors:', error); console.error('Error getting producers:', error);
} }
}; };
const getOrigins = async () => { const getOrigins = async () => {
try { try {
const res = await jApi.execQuery( const { data } = await api.get('Orders/getItemsOriginsAvailable', {
`CALL myOrder_getAvailable(#orderId); params: {
SELECT DISTINCT o.id, l.name, o.code orderId: basketOrderId.value,
FROM vn.item i whereFilter: queryFilter.value
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 itemOrigins.value = data;
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;
} catch (error) { } catch (error) {
console.error('Error getting productors:', error); console.error('Error getting origins:', error);
} }
}; };
const getSubcategories = async () => { const getSubcategories = async () => {
try { try {
const res = await jApi.execQuery( const { data } = await api.get(
`CALL myOrder_getAvailable(#orderId); 'Orders/getItemsSubcategoriesAvailable',
SELECT DISTINCT i.category {
FROM vn.item i params: {
JOIN vn.itemType t ON t.id = i.typeFk orderId: basketOrderId.value,
JOIN tmp.itemAvailable a ON a.id = i.id whereFilter: queryFilter.value
WHERE (${queryFilter.value}) }
ORDER BY category ASC; }
DROP TEMPORARY TABLE tmp.itemAvailable;`,
{ orderId: basketOrderId.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); itemSubcategories.value = filtered.map(i => i.category);
} catch (error) { } catch (error) {
console.error('Error getting subcategories:', error); console.error('Error getting subcategories:', error);
@ -906,23 +880,13 @@ const getItemTags = async itemFk => {
const calcItem = async itemId => { const calcItem = async itemId => {
try { try {
const res = await jApi.execQuery( const { data } = await api.get('Orders/getCalcFromItem', {
`CALL myOrder_calcCatalogFromItem(#orderId, #itemId); params: {
SELECT l.warehouseFk, w.name warehouse, p.grouping, orderId: basketOrderId.value,
p.price, p.priceKg, p.rate, l.available itemId
FROM tmp.ticketLot l }
JOIN tmp.ticketComponentPrice p ON p.warehouseFk = l.warehouseFk });
JOIN vn.warehouse w ON w.id = p.warehouseFk return data;
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;
} catch (error) { } catch (error) {
console.error('Error getting items:', error); console.error('Error getting items:', error);
} }
@ -962,10 +926,15 @@ const resetAmounts = () => {
const addItemToOrder = async params => { const addItemToOrder = async params => {
try { try {
await jApi.execQuery( await api.post('applications/myOrder_addItem/execute-proc', {
`CALL myOrder_addItem(#orderId, #warehouse, #item, #amount);`, schema: 'hedera',
params params: [
); params.orderId,
params.warehouse,
params.item,
params.amount
]
});
} catch (error) { } catch (error) {
console.error('Error adding item to basket:', error); console.error('Error adding item to basket:', error);
throw error; throw error;
@ -993,7 +962,7 @@ const onConfirmClick = async params => {
if (amountSum > 0) { if (amountSum > 0) {
await Promise.all(addItemPromises); await Promise.all(addItemPromises);
notify( notify(
`${t('added')} ${amountSum} ${selectedItem.value.item}`, `${t('added')} ${amountSum} ${selectedItem.value.name}`,
'positive' 'positive'
); );
} }