Catalog view #142

Merged
jsegarra merged 10 commits from wbuezas/hedera-web-mindshore:feature/catalog-view into beta 2025-04-17 07:22:33 +00:00
2 changed files with 78 additions and 107 deletions
Showing only changes of commit ad767ecd2b - Show all commits

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';

Comentario: esta la etiqeuta script despues de template? que raro

Comentario: esta la etiqeuta script despues de template? que raro

Modificado.

Commit: a227bc34fa

Modificado. Commit: https://gitea.verdnatura.es/verdnatura/hedera-web/commit/a227bc34fa5352f568ede5975da442b26a8a874f
import useNotify from 'src/composables/useNotify.js';
import debounce from 'src/utils/debouncer.js';
import { fetch } from 'src/composables/serviceUtils';
const jApi = inject('jApi');

Mantenemos jApi?

Mantenemos jApi?

Si porque queda la siguiente llamada por migrar:

const resultSet = await jApi.execQuery( 'CALL myOrder_configureForGuest(@orderId); SELECT @orderId;' );

No la migré todavía porque no puedo testear el guest user por los problemas de acl que estuvimos hablando. Por esto digo que ese tema es bloqueante.

Si porque queda la siguiente llamada por migrar: ` const resultSet = await jApi.execQuery( 'CALL myOrder_configureForGuest(@orderId); SELECT @orderId;' );` No la migré todavía porque no puedo testear el guest user por los problemas de acl que estuvimos hablando. Por esto digo que ese tema es bloqueante.
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

Buscando este bloque me he encontrado una coincidencia /home/jsegarra/Projects/salix/modules/ticket/back/models/sale.js
Dejo anotado que se parecen pero el archivo propuesto tiene mas lógica que no aplica aqui.

Buscando este bloque me he encontrado una coincidencia /home/jsegarra/Projects/salix/modules/ticket/back/models/sale.js Dejo anotado que se parecen pero el archivo propuesto tiene mas lógica que no aplica aqui.
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', {

Que te parece el nombre de calcCatalogFromItem ya que el procedimiento es el mismo

Que te parece el nombre de calcCatalogFromItem ya que el procedimiento es el mismo

Aplicado.

Commit: 43173272bd

Aplicado. Commit: https://gitea.verdnatura.es/verdnatura/hedera-web/commit/43173272bd8973956bc103ad07a3ea0dad97a09b
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'
);
}