diff --git a/src/components/common/VnDateBadge.vue b/src/components/common/VnDateBadge.vue new file mode 100644 index 000000000..fd6c9e8a4 --- /dev/null +++ b/src/components/common/VnDateBadge.vue @@ -0,0 +1,31 @@ + + diff --git a/src/pages/Item/Card/ItemDescriptor.vue b/src/pages/Item/Card/ItemDescriptor.vue index c51b320b5..4705525fb 100644 --- a/src/pages/Item/Card/ItemDescriptor.vue +++ b/src/pages/Item/Card/ItemDescriptor.vue @@ -16,7 +16,7 @@ import { cloneItem } from 'src/pages/Item/composables/cloneItem'; const $props = defineProps({ id: { - type: Number, + type: [Number, String], required: false, default: null, }, @@ -29,7 +29,7 @@ const $props = defineProps({ default: null, }, saleFk: { - type: Number, + type: [Number, String], default: null, }, warehouseFk: { @@ -61,7 +61,7 @@ onMounted(async () => { const data = ref(useCardDescription()); const setData = async (entity) => { if (!entity) return; - data.value = useCardDescription(entity.name, entity.id); + data.value = useCardDescription(entity?.name, entity?.id); await updateStock(); }; diff --git a/src/pages/Item/Card/ItemDescriptorImage.vue b/src/pages/Item/Card/ItemDescriptorImage.vue index 422725a38..05185c589 100644 --- a/src/pages/Item/Card/ItemDescriptorImage.vue +++ b/src/pages/Item/Card/ItemDescriptorImage.vue @@ -16,7 +16,7 @@ const $props = defineProps({ default: null, }, entityId: { - type: String, + type: [String, Number], default: null, }, showEditButton: { diff --git a/src/pages/Item/Card/ItemLastEntries.vue b/src/pages/Item/Card/ItemLastEntries.vue index d4d0647e3..533513ff7 100644 --- a/src/pages/Item/Card/ItemLastEntries.vue +++ b/src/pages/Item/Card/ItemLastEntries.vue @@ -5,14 +5,26 @@ import { useRoute } from 'vue-router'; import { dateRange } from 'src/filters'; import EntryDescriptorProxy from 'src/pages/Entry/Card/EntryDescriptorProxy.vue'; import VnInputDate from 'src/components/common/VnInputDate.vue'; -import { toDateTimeFormat } from 'src/filters/date.js'; +import VnDateBadge from 'src/components/common/VnDateBadge.vue'; import { dashIfEmpty } from 'src/filters'; import { toCurrency } from 'filters/index'; import { useArrayData } from 'composables/useArrayData'; import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue'; +import axios from 'axios'; +import SupplierDescriptorProxy from 'src/pages/Supplier/Card/SupplierDescriptorProxy.vue'; const { t } = useI18n(); const route = useRoute(); +const from = ref(); +const to = ref(); +const hideInventory = ref(true); +const inventorySupplierFk = ref(); + +async function getInventorySupplier() { + inventorySupplierFk.value = ( + await axios.get(`InventoryConfigs`) + )?.data[0]?.supplierFk; +} const exprBuilder = (param, value) => { switch (param) { @@ -33,25 +45,27 @@ const exprBuilder = (param, value) => { } }; -const from = ref(); -const to = ref(); +const where = { + itemFk: route.params.id, +}; + +if (hideInventory.value) { + where.supplierFk = { neq: inventorySupplierFk }; +} const arrayData = useArrayData('ItemLastEntries', { url: 'Items/lastEntriesFilter', order: ['landed DESC', 'buyFk DESC'], exprBuilder: exprBuilder, userFilter: { - where: { - itemFk: route.params.id, - }, + where: where, }, }); - const itemLastEntries = ref([]); const columns = computed(() => [ { - label: t('lastEntries.ig'), + label: 'Nv', name: 'ig', align: 'center', }, @@ -59,33 +73,38 @@ const columns = computed(() => [ label: t('itemDiary.warehouse'), name: 'warehouse', field: 'warehouse', - align: 'left', + align: 'center', }, { label: t('lastEntries.landed'), - name: 'id', + name: 'date', field: 'landed', - align: 'left', - format: (val) => toDateTimeFormat(val), + align: 'center', }, { label: t('lastEntries.entry'), name: 'entry', field: 'stateName', - align: 'left', + align: 'center', format: (val) => dashIfEmpty(val), }, { label: t('lastEntries.pvp'), name: 'pvp', field: 'reference', - align: 'left', + align: 'center', format: (_, row) => toCurrency(row.price2) + ' / ' + toCurrency(row.price3), }, - + { + label: t('lastEntries.printedStickers'), + name: 'printedStickers', + field: 'printedStickers', + align: 'center', + format: (val) => dashIfEmpty(val), + }, { label: t('lastEntries.label'), - name: 'label', + name: 'stickers', field: 'stickers', align: 'center', format: (val) => dashIfEmpty(val), @@ -93,11 +112,13 @@ const columns = computed(() => [ { label: t('shelvings.packing'), name: 'packing', + field: 'packing', align: 'center', }, { label: t('lastEntries.grouping'), name: 'grouping', + field: 'grouping', align: 'center', }, { @@ -108,18 +129,19 @@ const columns = computed(() => [ }, { label: t('lastEntries.quantity'), - name: 'stems', + name: 'quantity', field: 'quantity', align: 'center', }, { label: t('lastEntries.cost'), name: 'cost', - align: 'left', + field: 'cost', + align: 'center', }, { - label: t('lastEntries.kg'), - name: 'stems', + label: 'Kg', + name: 'weight', field: 'weight', align: 'center', }, @@ -131,9 +153,9 @@ const columns = computed(() => [ }, { label: t('lastEntries.supplier'), - name: 'stems', + name: 'supplier', field: 'supplier', - align: 'left', + align: 'center', }, ]); @@ -157,11 +179,18 @@ const updateFilter = async () => { else if (from.value && !to.value) filter = { gte: from.value }; else if (from.value && to.value) filter = { between: [from.value, to.value] }; - arrayData.store.userFilter.where.landed = filter; + const userFilter = arrayData.store.userFilter.where; + + userFilter.landed = filter; + if (hideInventory.value) userFilter.supplierFk = { neq: inventorySupplierFk }; + else delete userFilter.supplierFk; + await fetchItemLastEntries(); }; onMounted(async () => { + await getInventorySupplier(); + const _from = Date.vnNew(); _from.setDate(_from.getDate() - 75); from.value = getDate(_from, 'from'); @@ -171,14 +200,13 @@ onMounted(async () => { updateFilter(); - watch([from, to], ([nFrom, nTo], [oFrom, oTo]) => { + watch([from, to, hideInventory], ([nFrom, nTo], [oFrom, oTo]) => { if (nFrom && nFrom != oFrom) nFrom = getDate(new Date(nFrom), 'from'); if (nTo && nTo != oTo) nTo = getDate(new Date(nTo), 'to'); updateFilter(); }); }); - - + + es: + Hide inventory supplier: Ocultar proveedor inventario + diff --git a/src/pages/Item/Card/ItemSummary.vue b/src/pages/Item/Card/ItemSummary.vue index 7606e6a22..e1b97d7c9 100644 --- a/src/pages/Item/Card/ItemSummary.vue +++ b/src/pages/Item/Card/ItemSummary.vue @@ -46,7 +46,7 @@ const getUrl = (id, param) => `#/Item/${id}/${param}`;