0
0
Fork 0

refs #7283 item Descriptor

This commit is contained in:
Carlos Satorres 2024-09-17 15:03:30 +02:00
parent ae97e32826
commit db783e1538
4 changed files with 98 additions and 91 deletions

View File

@ -246,6 +246,7 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
} }
function updateStateParams() { function updateStateParams() {
if (!route) return;
const newUrl = { path: route.path, query: { ...(route.query ?? {}) } }; const newUrl = { path: route.path, query: { ...(route.query ?? {}) } };
newUrl.query[store.searchUrl] = JSON.stringify(store.currentFilter); newUrl.query[store.searchUrl] = JSON.stringify(store.currentFilter);

View File

@ -14,6 +14,7 @@ import useCardDescription from 'src/composables/useCardDescription';
import { getUrl } from 'src/composables/getUrl'; import { getUrl } from 'src/composables/getUrl';
import axios from 'axios'; import axios from 'axios';
import { dashIfEmpty } from 'src/filters'; import { dashIfEmpty } from 'src/filters';
import { useArrayData } from 'src/composables/useArrayData';
const $props = defineProps({ const $props = defineProps({
id: { id: {
@ -49,58 +50,49 @@ const entityId = computed(() => {
}); });
const regularizeStockFormDialog = ref(null); const regularizeStockFormDialog = ref(null);
const available = ref(null);
const visible = ref(null);
const salixUrl = ref(); const salixUrl = ref();
const mounted = ref();
const arrayDataStock = useArrayData('descriptorStock', {
url: `Items/${entityId.value}/getVisibleAvailable`,
});
onMounted(async () => { onMounted(async () => {
salixUrl.value = await getUrl(''); salixUrl.value = await getUrl('getVisibleAvailable');
await getItemConfigs(); await getItemConfigs();
await updateStock(); mounted.value = true;
}); });
const data = ref(useCardDescription()); const data = ref(useCardDescription());
const setData = async (entity) => { const setData = async (entity) => {
try {
if (!entity) return; if (!entity) return;
data.value = useCardDescription(entity.name, entity.id); data.value = useCardDescription(entity.name, entity.id);
await updateStock(); await updateStock();
} catch (err) {
console.error('Error item');
}
}; };
const getItemConfigs = async () => { const getItemConfigs = async () => {
try {
const { data } = await axios.get('ItemConfigs/findOne'); const { data } = await axios.get('ItemConfigs/findOne');
if (!data) return; if (!data) return;
return (warehouseConfig.value = data.warehouseFk); return (warehouseConfig.value = data.warehouseFk);
} catch (err) {
console.error('Error item');
}
}; };
const updateStock = async () => { const updateStock = async () => {
try { if (!mounted.value) return;
available.value = null; await getItemConfigs();
visible.value = null;
const params = { const params = {
warehouseFk: $props.warehouseFk, warehouseFk: $props.warehouseFk ?? warehouseConfig.value,
dated: $props.dated, dated: $props.dated,
}; };
await getItemConfigs(); if (!params.warehouseFk) return;
if (!params.warehouseFk) {
params.warehouseFk = warehouseConfig.value; const stock = useArrayData('descriptorStock', {
} url: `Items/${entityId.value}/getVisibleAvailable`,
const { data } = await axios.get(`Items/${entityId.value}/getVisibleAvailable`, { userParams: params,
params,
}); });
available.value = data.available; const storeData = stock.store.data;
visible.value = data.visible; if (storeData?.itemFk == entityId.value) return;
} catch (err) { await stock.fetch({});
console.error('Error updating stock');
}
}; };
const openRegularizeStockForm = () => { const openRegularizeStockForm = () => {
@ -163,8 +155,8 @@ const openCloneDialog = async () => {
<template #before> <template #before>
<ItemDescriptorImage <ItemDescriptorImage
:entity-id="entityId" :entity-id="entityId"
:visible="visible" :visible="arrayDataStock.store.data?.visible"
:available="available" :available="arrayDataStock.store.data?.available"
/> />
</template> </template>
<template #body="{ entity }"> <template #body="{ entity }">

View File

@ -32,6 +32,10 @@ const editPhotoFormDialog = ref(null);
const showEditPhotoForm = ref(false); const showEditPhotoForm = ref(false);
const warehouseName = ref(null); const warehouseName = ref(null);
onMounted(async () => {
getItemConfigs();
});
const toggleEditPictureForm = () => { const toggleEditPictureForm = () => {
showEditPhotoForm.value = !showEditPhotoForm.value; showEditPhotoForm.value = !showEditPhotoForm.value;
}; };
@ -56,10 +60,6 @@ const getWarehouseName = async (warehouseFk) => {
warehouseName.value = data.name; warehouseName.value = data.name;
}; };
onMounted(async () => {
getItemConfigs();
});
const handlePhotoUpdated = (evt = false) => { const handlePhotoUpdated = (evt = false) => {
image.value.reload(evt); image.value.reload(evt);
}; };

View File

@ -17,6 +17,7 @@ import { toDateFormat } from 'src/filters/date.js';
import { dashIfEmpty } from 'src/filters'; import { dashIfEmpty } from 'src/filters';
import { date } from 'quasar'; import { date } from 'quasar';
import { useState } from 'src/composables/useState'; import { useState } from 'src/composables/useState';
import { useArrayData } from 'src/composables/useArrayData';
import axios from 'axios'; import axios from 'axios';
const { t } = useI18n(); const { t } = useI18n();
@ -37,6 +38,33 @@ const warehouseFk = ref(null);
const _showWhatsBeforeInventory = ref(false); const _showWhatsBeforeInventory = ref(false);
const inventoriedDate = ref(null); const inventoriedDate = ref(null);
const originTypeMap = {
entry: {
descriptor: EntryDescriptorProxy,
icon: 'vn:entry',
color: 'green',
},
ticket: {
descriptor: TicketDescriptorProxy,
icon: 'vn:ticket',
color: 'red',
},
order: {
descriptor: OrderDescriptorProxy,
icon: 'vn:basket',
color: 'yellow',
},
};
const entityTypeMap = {
client: {
descriptor: CustomerDescriptorProxy,
},
supplier: {
descriptor: SupplierDescriptorProxy,
},
};
const columns = computed(() => [ const columns = computed(() => [
{ {
name: 'claim', name: 'claim',
@ -105,6 +133,28 @@ const showWhatsBeforeInventory = computed({
}, },
}); });
onMounted(async () => {
today.value.setHours(0, 0, 0, 0);
if (route.query.warehouseFk) warehouseFk.value = route.query.warehouseFk;
else if (user.value) warehouseFk.value = user.value.warehouseFk;
itemsBalanceFilter.where.warehouseFk = warehouseFk.value;
const { data } = await axios.get('Configs/findOne');
inventoriedDate.value = data.inventoried;
await fetchItemBalances();
await scrollToToday();
await updateWarehouse(warehouseFk.value);
});
onUnmounted(() => (stateStore.rightDrawer = false));
watch(
() => router.currentRoute.value.params.id,
(newId) => {
itemsBalanceFilter.where.itemFk = newId;
itemBalancesRef.value.fetch();
}
);
const fetchItemBalances = async () => await itemBalancesRef.value.fetch(); const fetchItemBalances = async () => await itemBalancesRef.value.fetch();
const getBadgeAttrs = (_date) => { const getBadgeAttrs = (_date) => {
@ -131,53 +181,15 @@ const formatDateForAttribute = (dateValue) => {
return dateValue; return dateValue;
}; };
const originTypeMap = { async function updateWarehouse(warehouseFk) {
entry: { const stock = useArrayData('descriptorStock', {
descriptor: EntryDescriptorProxy, userParams: {
icon: 'vn:entry', warehouseFk,
color: 'green',
}, },
ticket: { });
descriptor: TicketDescriptorProxy, await stock.fetch({});
icon: 'vn:ticket', stock.store.data.itemFk = route.params.id
color: 'red', }
},
order: {
descriptor: OrderDescriptorProxy,
icon: 'vn:basket',
color: 'yellow',
},
};
const entityTypeMap = {
client: {
descriptor: CustomerDescriptorProxy,
},
supplier: {
descriptor: SupplierDescriptorProxy,
},
};
onMounted(async () => {
today.value.setHours(0, 0, 0, 0);
if (route.query.warehouseFk) warehouseFk.value = route.query.warehouseFk;
else if (user.value) warehouseFk.value = user.value.warehouseFk;
itemsBalanceFilter.where.warehouseFk = warehouseFk.value;
const { data } = await axios.get('Configs/findOne');
inventoriedDate.value = data.inventoried;
await fetchItemBalances();
await scrollToToday();
});
onUnmounted(() => (stateStore.rightDrawer = false));
watch(
() => router.currentRoute.value.params.id,
(newId) => {
itemsBalanceFilter.where.itemFk = newId;
itemBalancesRef.value.fetch();
}
);
</script> </script>
<template> <template>
@ -203,7 +215,9 @@ watch(
option-value="id" option-value="id"
dense dense
v-model="itemsBalanceFilter.where.warehouseFk" v-model="itemsBalanceFilter.where.warehouseFk"
@update:model-value="fetchItemBalances" @update:model-value="
(value) => fetchItemBalances() && updateWarehouse(value)
"
class="q-mr-lg" class="q-mr-lg"
/> />
<QCheckbox <QCheckbox