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) {
|
||||
params.filter.where = { ...params.filter.where, ...exprFilter };
|
||||
}
|
||||
|
|
|
@ -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'
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue