catalog view migration
This commit is contained in:
parent
a1b54d50b5
commit
ad767ecd2b
|
@ -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 };
|
||||||
}
|
}
|
||||||
|
|
|
@ -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'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue