Merge branch 'dev' into 8077-sumDefaulterFront
gitea/salix-front/pipeline/pr-dev This commit looks good
Details
gitea/salix-front/pipeline/pr-dev This commit looks good
Details
This commit is contained in:
commit
f373f34609
|
@ -38,7 +38,7 @@ const onDataSaved = (dataSaved) => {
|
||||||
@on-fetch="(data) => (warehousesOptions = data)"
|
@on-fetch="(data) => (warehousesOptions = data)"
|
||||||
auto-load
|
auto-load
|
||||||
url="Warehouses"
|
url="Warehouses"
|
||||||
:filter="{ fields: ['id', 'name'], order: 'name ASC', limit: 30 }"
|
:filter="{ fields: ['id', 'name'], order: 'name ASC' }"
|
||||||
/>
|
/>
|
||||||
<FetchData
|
<FetchData
|
||||||
@on-fetch="(data) => (temperaturesOptions = data)"
|
@on-fetch="(data) => (temperaturesOptions = data)"
|
||||||
|
|
|
@ -50,25 +50,25 @@ const loading = ref(false);
|
||||||
|
|
||||||
const tableColumns = computed(() => [
|
const tableColumns = computed(() => [
|
||||||
{
|
{
|
||||||
label: t('entry.buys.id'),
|
label: t('globals.id'),
|
||||||
name: 'id',
|
name: 'id',
|
||||||
field: 'id',
|
field: 'id',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('entry.buys.name'),
|
label: t('globals.name'),
|
||||||
name: 'name',
|
name: 'name',
|
||||||
field: 'name',
|
field: 'name',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('entry.buys.size'),
|
label: t('globals.size'),
|
||||||
name: 'size',
|
name: 'size',
|
||||||
field: 'size',
|
field: 'size',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('entry.buys.producer'),
|
label: t('globals.producer'),
|
||||||
name: 'producerName',
|
name: 'producerName',
|
||||||
field: 'producer',
|
field: 'producer',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -152,10 +152,10 @@ const selectItem = ({ id }) => {
|
||||||
</span>
|
</span>
|
||||||
<h1 class="title">{{ t('Filter item') }}</h1>
|
<h1 class="title">{{ t('Filter item') }}</h1>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInput :label="t('entry.buys.name')" v-model="itemFilterParams.name" />
|
<VnInput :label="t('globals.name')" v-model="itemFilterParams.name" />
|
||||||
<VnInput :label="t('entry.buys.size')" v-model="itemFilterParams.size" />
|
<VnInput :label="t('entry.buys.size')" v-model="itemFilterParams.size" />
|
||||||
<VnSelect
|
<VnSelect
|
||||||
:label="t('entry.buys.producer')"
|
:label="t('globals.producer')"
|
||||||
:options="producersOptions"
|
:options="producersOptions"
|
||||||
hide-selected
|
hide-selected
|
||||||
option-label="name"
|
option-label="name"
|
||||||
|
@ -163,7 +163,7 @@ const selectItem = ({ id }) => {
|
||||||
v-model="itemFilterParams.producerFk"
|
v-model="itemFilterParams.producerFk"
|
||||||
/>
|
/>
|
||||||
<VnSelect
|
<VnSelect
|
||||||
:label="t('entry.buys.type')"
|
:label="t('globals.type')"
|
||||||
:options="ItemTypesOptions"
|
:options="ItemTypesOptions"
|
||||||
hide-selected
|
hide-selected
|
||||||
option-label="name"
|
option-label="name"
|
||||||
|
|
|
@ -48,13 +48,13 @@ const loading = ref(false);
|
||||||
|
|
||||||
const tableColumns = computed(() => [
|
const tableColumns = computed(() => [
|
||||||
{
|
{
|
||||||
label: t('entry.basicData.id'),
|
label: t('globals.id'),
|
||||||
name: 'id',
|
name: 'id',
|
||||||
field: 'id',
|
field: 'id',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('entry.basicData.warehouseOut'),
|
label: t('globals.warehouseOut'),
|
||||||
name: 'warehouseOutFk',
|
name: 'warehouseOutFk',
|
||||||
field: 'warehouseOutFk',
|
field: 'warehouseOutFk',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -62,7 +62,7 @@ const tableColumns = computed(() => [
|
||||||
warehousesOptions.value.find((warehouse) => warehouse.id === val).name,
|
warehousesOptions.value.find((warehouse) => warehouse.id === val).name,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('entry.basicData.warehouseIn'),
|
label: t('globals.warehouseIn'),
|
||||||
name: 'warehouseInFk',
|
name: 'warehouseInFk',
|
||||||
field: 'warehouseInFk',
|
field: 'warehouseInFk',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -70,14 +70,14 @@ const tableColumns = computed(() => [
|
||||||
warehousesOptions.value.find((warehouse) => warehouse.id === val).name,
|
warehousesOptions.value.find((warehouse) => warehouse.id === val).name,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('entry.basicData.shipped'),
|
label: t('globals.shipped'),
|
||||||
name: 'shipped',
|
name: 'shipped',
|
||||||
field: 'shipped',
|
field: 'shipped',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
format: (val) => toDate(val),
|
format: (val) => toDate(val),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('entry.basicData.landed'),
|
label: t('globals.landed'),
|
||||||
name: 'landed',
|
name: 'landed',
|
||||||
field: 'landed',
|
field: 'landed',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -146,7 +146,7 @@ const selectTravel = ({ id }) => {
|
||||||
<h1 class="title">{{ t('Filter travels') }}</h1>
|
<h1 class="title">{{ t('Filter travels') }}</h1>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnSelect
|
<VnSelect
|
||||||
:label="t('entry.basicData.agency')"
|
:label="t('globals.agency')"
|
||||||
:options="agenciesOptions"
|
:options="agenciesOptions"
|
||||||
hide-selected
|
hide-selected
|
||||||
option-label="name"
|
option-label="name"
|
||||||
|
@ -154,7 +154,7 @@ const selectTravel = ({ id }) => {
|
||||||
v-model="travelFilterParams.agencyModeFk"
|
v-model="travelFilterParams.agencyModeFk"
|
||||||
/>
|
/>
|
||||||
<VnSelect
|
<VnSelect
|
||||||
:label="t('entry.basicData.warehouseOut')"
|
:label="t('globals.warehouseOut')"
|
||||||
:options="warehousesOptions"
|
:options="warehousesOptions"
|
||||||
hide-selected
|
hide-selected
|
||||||
option-label="name"
|
option-label="name"
|
||||||
|
@ -162,7 +162,7 @@ const selectTravel = ({ id }) => {
|
||||||
v-model="travelFilterParams.warehouseOutFk"
|
v-model="travelFilterParams.warehouseOutFk"
|
||||||
/>
|
/>
|
||||||
<VnSelect
|
<VnSelect
|
||||||
:label="t('entry.basicData.warehouseIn')"
|
:label="t('globals.warehouseIn')"
|
||||||
:options="warehousesOptions"
|
:options="warehousesOptions"
|
||||||
hide-selected
|
hide-selected
|
||||||
option-label="name"
|
option-label="name"
|
||||||
|
@ -170,11 +170,11 @@ const selectTravel = ({ id }) => {
|
||||||
v-model="travelFilterParams.warehouseInFk"
|
v-model="travelFilterParams.warehouseInFk"
|
||||||
/>
|
/>
|
||||||
<VnInputDate
|
<VnInputDate
|
||||||
:label="t('entry.basicData.shipped')"
|
:label="t('globals.shipped')"
|
||||||
v-model="travelFilterParams.shipped"
|
v-model="travelFilterParams.shipped"
|
||||||
/>
|
/>
|
||||||
<VnInputDate
|
<VnInputDate
|
||||||
:label="t('entry.basicData.landed')"
|
:label="t('globals.landed')"
|
||||||
v-model="travelFilterParams.landed"
|
v-model="travelFilterParams.landed"
|
||||||
/>
|
/>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
|
|
|
@ -248,7 +248,7 @@ const removeTag = (index, params, search) => {
|
||||||
>
|
>
|
||||||
<QItemSection class="col">
|
<QItemSection class="col">
|
||||||
<VnSelect
|
<VnSelect
|
||||||
:label="t('components.itemsFilterPanel.tag')"
|
:label="t('globals.tag')"
|
||||||
v-model="value.selectedTag"
|
v-model="value.selectedTag"
|
||||||
:options="tagOptions"
|
:options="tagOptions"
|
||||||
option-label="name"
|
option-label="name"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import { onMounted, watch, ref, reactive } from 'vue';
|
import { onMounted, watch, ref, reactive, computed } from 'vue';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { QSeparator, useQuasar } from 'quasar';
|
import { QSeparator, useQuasar } from 'quasar';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
|
@ -9,6 +9,7 @@ import { toLowerCamel } from 'src/filters';
|
||||||
import routes from 'src/router/modules';
|
import routes from 'src/router/modules';
|
||||||
import LeftMenuItem from './LeftMenuItem.vue';
|
import LeftMenuItem from './LeftMenuItem.vue';
|
||||||
import LeftMenuItemGroup from './LeftMenuItemGroup.vue';
|
import LeftMenuItemGroup from './LeftMenuItemGroup.vue';
|
||||||
|
import VnInput from './common/VnInput.vue';
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
@ -22,7 +23,40 @@ const props = defineProps({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const items = ref([]);
|
||||||
const expansionItemElements = reactive({});
|
const expansionItemElements = reactive({});
|
||||||
|
const pinnedModules = computed(() => {
|
||||||
|
const map = new Map();
|
||||||
|
items.value.forEach((item) => item.isPinned && map.set(item.name, item));
|
||||||
|
return map;
|
||||||
|
});
|
||||||
|
const search = ref(null);
|
||||||
|
|
||||||
|
const filteredItems = computed(() => {
|
||||||
|
if (!search.value) return items.value;
|
||||||
|
const normalizedSearch = normalize(search.value);
|
||||||
|
return items.value.filter((item) => {
|
||||||
|
const locale = normalize(t(item.title));
|
||||||
|
return locale.includes(normalizedSearch);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
const filteredPinnedModules = computed(() => {
|
||||||
|
if (!search.value) return pinnedModules.value;
|
||||||
|
const normalizedSearch = search.value
|
||||||
|
.normalize('NFD')
|
||||||
|
.replace(/[\u0300-\u036f]/g, '')
|
||||||
|
.toLowerCase();
|
||||||
|
const map = new Map();
|
||||||
|
for (const [key, pinnedModule] of pinnedModules.value) {
|
||||||
|
const locale = t(pinnedModule.title)
|
||||||
|
.normalize('NFD')
|
||||||
|
.replace(/[\u0300-\u036f]/g, '')
|
||||||
|
.toLowerCase();
|
||||||
|
if (locale.includes(normalizedSearch)) map.set(key, pinnedModule);
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
});
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
await navigation.fetchPinned();
|
await navigation.fetchPinned();
|
||||||
|
@ -66,8 +100,6 @@ function addChildren(module, route, parent) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const items = ref([]);
|
|
||||||
|
|
||||||
function getRoutes() {
|
function getRoutes() {
|
||||||
if (props.source === 'main') {
|
if (props.source === 'main') {
|
||||||
const modules = Object.assign([], navigation.getModules().value);
|
const modules = Object.assign([], navigation.getModules().value);
|
||||||
|
@ -123,21 +155,57 @@ async function togglePinned(item, event) {
|
||||||
const handleItemExpansion = (itemName) => {
|
const handleItemExpansion = (itemName) => {
|
||||||
expansionItemElements[itemName].scrollToLastElement();
|
expansionItemElements[itemName].scrollToLastElement();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function normalize(text) {
|
||||||
|
return text
|
||||||
|
.normalize('NFD')
|
||||||
|
.replace(/[\u0300-\u036f]/g, '')
|
||||||
|
.toLowerCase();
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<QList padding class="column-max-width">
|
<QList padding class="column-max-width">
|
||||||
<template v-if="$props.source === 'main'">
|
<template v-if="$props.source === 'main'">
|
||||||
<template v-if="$route?.matched[1]?.name === 'Dashboard'">
|
<template v-if="$route?.matched[1]?.name === 'Dashboard'">
|
||||||
<QItem class="header">
|
<QItem class="q-pb-md">
|
||||||
<QItemSection avatar>
|
<VnInput
|
||||||
<QIcon name="view_module" />
|
v-model="search"
|
||||||
</QItemSection>
|
:label="t('Search modules')"
|
||||||
<QItemSection> {{ t('globals.modules') }}</QItemSection>
|
class="full-width"
|
||||||
|
filled
|
||||||
|
dense
|
||||||
|
/>
|
||||||
</QItem>
|
</QItem>
|
||||||
<QSeparator />
|
<QSeparator />
|
||||||
<template v-for="item in items" :key="item.name">
|
<template v-if="filteredPinnedModules.size">
|
||||||
<template v-if="item.children">
|
<LeftMenuItem
|
||||||
|
v-for="[key, pinnedModule] of filteredPinnedModules"
|
||||||
|
:key="key"
|
||||||
|
:item="pinnedModule"
|
||||||
|
group="modules"
|
||||||
|
>
|
||||||
|
<template #side>
|
||||||
|
<QBtn
|
||||||
|
v-if="pinnedModule.isPinned === true"
|
||||||
|
@click="togglePinned(pinnedModule, $event)"
|
||||||
|
icon="remove_circle"
|
||||||
|
size="xs"
|
||||||
|
flat
|
||||||
|
round
|
||||||
|
>
|
||||||
|
<QTooltip>
|
||||||
|
{{ t('components.leftMenu.removeFromPinned') }}
|
||||||
|
</QTooltip>
|
||||||
|
</QBtn>
|
||||||
|
</template>
|
||||||
|
</LeftMenuItem>
|
||||||
|
<QSeparator />
|
||||||
|
</template>
|
||||||
|
<template v-for="item in filteredItems" :key="item.name">
|
||||||
|
<template
|
||||||
|
v-if="item.children && !filteredPinnedModules.has(item.name)"
|
||||||
|
>
|
||||||
<LeftMenuItem :item="item" group="modules">
|
<LeftMenuItem :item="item" group="modules">
|
||||||
<template #side>
|
<template #side>
|
||||||
<QBtn
|
<QBtn
|
||||||
|
@ -256,3 +324,7 @@ const handleItemExpansion = (itemName) => {
|
||||||
color: var(--vn-label-color);
|
color: var(--vn-label-color);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
<i18n>
|
||||||
|
es:
|
||||||
|
Search modules: Buscar módulos
|
||||||
|
</i18n>
|
||||||
|
|
|
@ -163,7 +163,7 @@ function addDefaultData(data) {
|
||||||
/>
|
/>
|
||||||
<QFile
|
<QFile
|
||||||
ref="inputFileRef"
|
ref="inputFileRef"
|
||||||
:label="t('entry.buys.file')"
|
:label="t('globals.file')"
|
||||||
v-model="dms.files"
|
v-model="dms.files"
|
||||||
:multiple="false"
|
:multiple="false"
|
||||||
:accept="allowedContentTypes"
|
:accept="allowedContentTypes"
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, toRefs, computed, watch, onMounted, useAttrs } from 'vue';
|
import { ref, toRefs, computed, watch, onMounted, useAttrs } from 'vue';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import FetchData from 'src/components/FetchData.vue';
|
import { useArrayData } from 'src/composables/useArrayData';
|
||||||
import { useRequired } from 'src/composables/useRequired';
|
import { useRequired } from 'src/composables/useRequired';
|
||||||
|
import dataByOrder from 'src/utils/dataByOrder';
|
||||||
|
|
||||||
const emit = defineEmits(['update:modelValue', 'update:options', 'remove']);
|
const emit = defineEmits(['update:modelValue', 'update:options', 'remove']);
|
||||||
const $attrs = useAttrs();
|
const $attrs = useAttrs();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
@ -88,6 +90,10 @@ const $props = defineProps({
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
|
dataKey: {
|
||||||
|
type: String,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const mixinRules = [requiredFieldRule, ...($attrs.rules ?? [])];
|
const mixinRules = [requiredFieldRule, ...($attrs.rules ?? [])];
|
||||||
|
@ -96,14 +102,14 @@ const { optionLabel, optionValue, optionFilter, optionFilterValue, options, mode
|
||||||
const myOptions = ref([]);
|
const myOptions = ref([]);
|
||||||
const myOptionsOriginal = ref([]);
|
const myOptionsOriginal = ref([]);
|
||||||
const vnSelectRef = ref();
|
const vnSelectRef = ref();
|
||||||
const dataRef = ref();
|
|
||||||
const lastVal = ref();
|
const lastVal = ref();
|
||||||
const noOneText = t('globals.noOne');
|
const noOneText = t('globals.noOne');
|
||||||
const noOneOpt = ref({
|
const noOneOpt = ref({
|
||||||
[optionValue.value]: false,
|
[optionValue.value]: false,
|
||||||
[optionLabel.value]: noOneText,
|
[optionLabel.value]: noOneText,
|
||||||
});
|
});
|
||||||
|
const isLoading = ref(false);
|
||||||
|
const useURL = computed(() => $props.url);
|
||||||
const value = computed({
|
const value = computed({
|
||||||
get() {
|
get() {
|
||||||
return $props.modelValue;
|
return $props.modelValue;
|
||||||
|
@ -119,7 +125,7 @@ watch(options, (newValue) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
watch(modelValue, async (newValue) => {
|
watch(modelValue, async (newValue) => {
|
||||||
if (!myOptions.value.some((option) => option[optionValue.value] == newValue))
|
if (!myOptions?.value?.some((option) => option[optionValue.value] == newValue))
|
||||||
await fetchFilter(newValue);
|
await fetchFilter(newValue);
|
||||||
|
|
||||||
if ($props.noOne) myOptions.value.unshift(noOneOpt.value);
|
if ($props.noOne) myOptions.value.unshift(noOneOpt.value);
|
||||||
|
@ -127,17 +133,25 @@ watch(modelValue, async (newValue) => {
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
setOptions(options.value);
|
setOptions(options.value);
|
||||||
if ($props.url && $props.modelValue && !findKeyInOptions())
|
if (useURL.value && $props.modelValue && !findKeyInOptions())
|
||||||
fetchFilter($props.modelValue);
|
fetchFilter($props.modelValue);
|
||||||
if ($props.focusOnMount) setTimeout(() => vnSelectRef.value.showPopup(), 300);
|
if ($props.focusOnMount) setTimeout(() => vnSelectRef.value.showPopup(), 300);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
defineExpose({ opts: myOptions });
|
||||||
|
|
||||||
|
const arrayDataKey =
|
||||||
|
$props.dataKey ?? ($props.url?.length > 0 ? $props.url : $attrs.name ?? $attrs.label);
|
||||||
|
|
||||||
|
const arrayData = useArrayData(arrayDataKey, { url: $props.url, searchUrl: false });
|
||||||
|
|
||||||
function findKeyInOptions() {
|
function findKeyInOptions() {
|
||||||
if (!$props.options) return;
|
if (!$props.options) return;
|
||||||
return filter($props.modelValue, $props.options)?.length;
|
return filter($props.modelValue, $props.options)?.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setOptions(data) {
|
function setOptions(data) {
|
||||||
|
data = dataByOrder(data, $props.sortBy);
|
||||||
myOptions.value = JSON.parse(JSON.stringify(data));
|
myOptions.value = JSON.parse(JSON.stringify(data));
|
||||||
myOptionsOriginal.value = JSON.parse(JSON.stringify(data));
|
myOptionsOriginal.value = JSON.parse(JSON.stringify(data));
|
||||||
emit('update:options', data);
|
emit('update:options', data);
|
||||||
|
@ -165,7 +179,7 @@ function filter(val, options) {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function fetchFilter(val) {
|
async function fetchFilter(val) {
|
||||||
if (!$props.url || !dataRef.value) return;
|
if (!$props.url) return;
|
||||||
|
|
||||||
const { fields, include, sortBy, limit } = $props;
|
const { fields, include, sortBy, limit } = $props;
|
||||||
const key =
|
const key =
|
||||||
|
@ -187,8 +201,8 @@ async function fetchFilter(val) {
|
||||||
const fetchOptions = { where, include, limit };
|
const fetchOptions = { where, include, limit };
|
||||||
if (fields) fetchOptions.fields = fields;
|
if (fields) fetchOptions.fields = fields;
|
||||||
if (sortBy) fetchOptions.order = sortBy;
|
if (sortBy) fetchOptions.order = sortBy;
|
||||||
|
arrayData.reset(['skip', 'filter.skip', 'page']);
|
||||||
return dataRef.value.fetch(fetchOptions);
|
return (await arrayData.applyFilter({ filter: fetchOptions }))?.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function filterHandler(val, update) {
|
async function filterHandler(val, update) {
|
||||||
|
@ -228,20 +242,23 @@ function nullishToTrue(value) {
|
||||||
|
|
||||||
const getVal = (val) => ($props.useLike ? { like: `%${val}%` } : val);
|
const getVal = (val) => ($props.useLike ? { like: `%${val}%` } : val);
|
||||||
|
|
||||||
defineExpose({ opts: myOptions });
|
async function onScroll({ to, direction, from, index }) {
|
||||||
|
const lastIndex = myOptions.value.length - 1;
|
||||||
|
|
||||||
|
if (from === 0 && index === 0) return;
|
||||||
|
if (!useURL.value && !$props.fetchRef) return;
|
||||||
|
if (direction === 'decrease') return;
|
||||||
|
if (to === lastIndex && arrayData.store.hasMoreData && !isLoading.value) {
|
||||||
|
isLoading.value = true;
|
||||||
|
await arrayData.loadMore();
|
||||||
|
setOptions(arrayData.store.data);
|
||||||
|
vnSelectRef.value.scrollTo(lastIndex);
|
||||||
|
isLoading.value = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<FetchData
|
|
||||||
ref="dataRef"
|
|
||||||
:url="$props.url"
|
|
||||||
@on-fetch="(data) => setOptions(data)"
|
|
||||||
:where="where || { [optionValue]: value }"
|
|
||||||
:limit="limit"
|
|
||||||
:sort-by="sortBy"
|
|
||||||
:fields="fields"
|
|
||||||
:params="params"
|
|
||||||
/>
|
|
||||||
<QSelect
|
<QSelect
|
||||||
v-model="value"
|
v-model="value"
|
||||||
:options="myOptions"
|
:options="myOptions"
|
||||||
|
@ -260,6 +277,9 @@ defineExpose({ opts: myOptions });
|
||||||
:rules="mixinRules"
|
:rules="mixinRules"
|
||||||
virtual-scroll-slice-size="options.length"
|
virtual-scroll-slice-size="options.length"
|
||||||
hide-bottom-space
|
hide-bottom-space
|
||||||
|
:input-debounce="useURL ? '300' : '0'"
|
||||||
|
:loading="isLoading"
|
||||||
|
@virtual-scroll="onScroll"
|
||||||
>
|
>
|
||||||
<template v-if="isClearable" #append>
|
<template v-if="isClearable" #append>
|
||||||
<QIcon
|
<QIcon
|
||||||
|
|
|
@ -57,7 +57,6 @@ const $props = defineProps({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
defineExpose({ search, sanitizer });
|
|
||||||
const emit = defineEmits([
|
const emit = defineEmits([
|
||||||
'update:modelValue',
|
'update:modelValue',
|
||||||
'refresh',
|
'refresh',
|
||||||
|
@ -170,9 +169,29 @@ const tagsList = computed(() => {
|
||||||
return tagList;
|
return tagList;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const formatTags = (tags) => {
|
||||||
|
const formattedTags = [];
|
||||||
|
tags.forEach((tag) => {
|
||||||
|
if (tag.label === 'and') {
|
||||||
|
tag.value.forEach((item) => {
|
||||||
|
for (const key in item) {
|
||||||
|
formattedTags.push({ label: key, value: item[key] });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
formattedTags.push(tag);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return formattedTags;
|
||||||
|
};
|
||||||
|
|
||||||
const tags = computed(() => {
|
const tags = computed(() => {
|
||||||
return tagsList.value.filter((tag) => !($props.customTags || []).includes(tag.label));
|
const filteredTags = tagsList.value.filter(
|
||||||
|
(tag) => !($props.customTags || []).includes(tag.label)
|
||||||
|
);
|
||||||
|
return formatTags(filteredTags);
|
||||||
});
|
});
|
||||||
|
|
||||||
const customTags = computed(() =>
|
const customTags = computed(() =>
|
||||||
tagsList.value.filter((tag) => ($props.customTags || []).includes(tag.label))
|
tagsList.value.filter((tag) => ($props.customTags || []).includes(tag.label))
|
||||||
);
|
);
|
||||||
|
@ -193,13 +212,20 @@ function formatValue(value) {
|
||||||
|
|
||||||
function sanitizer(params) {
|
function sanitizer(params) {
|
||||||
for (const [key, value] of Object.entries(params)) {
|
for (const [key, value] of Object.entries(params)) {
|
||||||
if (value && typeof value === 'object') {
|
if (key === 'and' && Array.isArray(value)) {
|
||||||
|
value.forEach((item) => {
|
||||||
|
Object.assign(params, item);
|
||||||
|
});
|
||||||
|
delete params[key];
|
||||||
|
} else if (value && typeof value === 'object') {
|
||||||
const param = Object.values(value)[0];
|
const param = Object.values(value)[0];
|
||||||
if (typeof param == 'string') params[key] = param.replaceAll('%', '');
|
if (typeof param == 'string') params[key] = param.replaceAll('%', '');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return params;
|
return params;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
defineExpose({ search, sanitizer, userParams });
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|
|
@ -1,16 +1,49 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
defineProps({ phoneNumber: { type: [String, Number], default: null } });
|
import { reactive, useAttrs, onBeforeMount, capitalize } from 'vue';
|
||||||
|
import axios from 'axios';
|
||||||
|
const props = defineProps({
|
||||||
|
phoneNumber: { type: [String, Number], default: null },
|
||||||
|
channel: { type: Number, default: null },
|
||||||
|
});
|
||||||
|
|
||||||
|
const config = reactive({
|
||||||
|
sip: { icon: 'phone', href: `sip:${props.phoneNumber}` },
|
||||||
|
'say-simple': {
|
||||||
|
icon: 'vn:saysimple',
|
||||||
|
href: null,
|
||||||
|
channel: props.channel,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const type = Object.keys(config).find((key) => key in useAttrs()) || 'sip';
|
||||||
|
|
||||||
|
onBeforeMount(async () => {
|
||||||
|
let { channel } = config[type];
|
||||||
|
|
||||||
|
if (type === 'say-simple') {
|
||||||
|
const { url, defaultChannel } = (await axios.get('SaySimpleConfigs/findOne'))
|
||||||
|
.data;
|
||||||
|
if (!channel) channel = defaultChannel;
|
||||||
|
|
||||||
|
config[
|
||||||
|
type
|
||||||
|
].href = `${url}?customerIdentity=%2B${props.phoneNumber}&channelId=${channel}`;
|
||||||
|
}
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<QBtn
|
<QBtn
|
||||||
v-if="phoneNumber"
|
v-if="phoneNumber"
|
||||||
flat
|
flat
|
||||||
round
|
round
|
||||||
icon="phone"
|
:icon="config[type].icon"
|
||||||
size="sm"
|
size="sm"
|
||||||
color="primary"
|
color="primary"
|
||||||
padding="none"
|
padding="none"
|
||||||
:href="`sip:${phoneNumber}`"
|
:href="config[type].href"
|
||||||
@click.stop
|
@click.stop
|
||||||
/>
|
>
|
||||||
|
<QTooltip>
|
||||||
|
{{ capitalize(type).replace('-', '') }}
|
||||||
|
</QTooltip>
|
||||||
|
</QBtn>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -65,13 +65,9 @@ onBeforeRouteLeave((to, from, next) => {
|
||||||
auto-load
|
auto-load
|
||||||
@on-fetch="(data) => (observationTypes = data)"
|
@on-fetch="(data) => (observationTypes = data)"
|
||||||
/>
|
/>
|
||||||
<QCard class="q-pa-xs q-mb-xl full-width" v-if="$props.addNote">
|
<QCard class="q-pa-xs q-mb-lg full-width" v-if="$props.addNote">
|
||||||
<QCardSection horizontal>
|
<QCardSection horizontal>
|
||||||
<VnAvatar :worker-id="currentUser.id" size="md" />
|
{{ t('New note') }}
|
||||||
<div class="full-width row justify-between q-pa-xs">
|
|
||||||
<VnUserLink :name="t('New note')" :worker-id="currentUser.id" />
|
|
||||||
{{ t('globals.now') }}
|
|
||||||
</div>
|
|
||||||
</QCardSection>
|
</QCardSection>
|
||||||
<QCardSection class="q-px-xs q-my-none q-py-none">
|
<QCardSection class="q-px-xs q-my-none q-py-none">
|
||||||
<VnRow class="full-width">
|
<VnRow class="full-width">
|
||||||
|
@ -144,7 +140,7 @@ onBeforeRouteLeave((to, from, next) => {
|
||||||
<div class="full-width row justify-between q-pa-xs">
|
<div class="full-width row justify-between q-pa-xs">
|
||||||
<div>
|
<div>
|
||||||
<VnUserLink
|
<VnUserLink
|
||||||
:name="`${note.worker.user.nickname}`"
|
:name="`${note.worker.user.name}`"
|
||||||
:worker-id="note.worker.id"
|
:worker-id="note.worker.id"
|
||||||
/>
|
/>
|
||||||
<QBadge
|
<QBadge
|
||||||
|
|
|
@ -247,6 +247,7 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateStateParams() {
|
function updateStateParams() {
|
||||||
|
if (!route?.path) return;
|
||||||
const newUrl = { path: route.path, query: { ...(route.query ?? {}) } };
|
const newUrl = { path: route.path, query: { ...(route.query ?? {}) } };
|
||||||
if (store?.searchUrl)
|
if (store?.searchUrl)
|
||||||
newUrl.query[store.searchUrl] = JSON.stringify(store.currentFilter);
|
newUrl.query[store.searchUrl] = JSON.stringify(store.currentFilter);
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
import { openURL } from 'quasar';
|
||||||
|
const defaultWindowFeatures = {
|
||||||
|
noopener: true,
|
||||||
|
noreferrer: true,
|
||||||
|
};
|
||||||
|
export default function (url, windowFeatures = defaultWindowFeatures, fn = undefined) {
|
||||||
|
openURL(url, fn, windowFeatures);
|
||||||
|
}
|
|
@ -10,11 +10,19 @@ function parseJSON(str, fallback) {
|
||||||
export default function (route, param) {
|
export default function (route, param) {
|
||||||
// catch route query params
|
// catch route query params
|
||||||
const params = parseJSON(route?.query?.params, {});
|
const params = parseJSON(route?.query?.params, {});
|
||||||
|
|
||||||
// extract and parse filter from params
|
// extract and parse filter from params
|
||||||
const { filter: filterStr = '{}' } = params;
|
const { filter: filterStr = '{}' } = params;
|
||||||
|
|
||||||
const where = parseJSON(filterStr, {})?.where;
|
const where = parseJSON(filterStr, {})?.where;
|
||||||
if (where && where[param] !== undefined) {
|
|
||||||
|
if (where && !param) {
|
||||||
|
return where;
|
||||||
|
} else if (where && where.and) {
|
||||||
|
const foundParam = where.and.find((p) => p[param]);
|
||||||
|
if (foundParam) {
|
||||||
|
return foundParam[param];
|
||||||
|
}
|
||||||
|
} else if (where && where[param]) {
|
||||||
return where[param];
|
return where[param];
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -59,7 +59,7 @@ globals:
|
||||||
downloadCSVSuccess: CSV downloaded successfully
|
downloadCSVSuccess: CSV downloaded successfully
|
||||||
reference: Reference
|
reference: Reference
|
||||||
agency: Agency
|
agency: Agency
|
||||||
wareHouseOut: Warehouse Out
|
warehouseOut: Warehouse Out
|
||||||
wareHouseIn: Warehouse In
|
wareHouseIn: Warehouse In
|
||||||
landed: Landed
|
landed: Landed
|
||||||
shipped: Shipped
|
shipped: Shipped
|
||||||
|
@ -106,6 +106,29 @@ globals:
|
||||||
weight: Weight
|
weight: Weight
|
||||||
error: Ups! Something went wrong
|
error: Ups! Something went wrong
|
||||||
recalc: Recalculate
|
recalc: Recalculate
|
||||||
|
alias: Alias
|
||||||
|
vat: VAT
|
||||||
|
intrastat: Intrastat
|
||||||
|
tags: Tags
|
||||||
|
size: Size
|
||||||
|
producer: Producer
|
||||||
|
origin: Origin
|
||||||
|
state: State
|
||||||
|
subtotal: Subtotal
|
||||||
|
visible: Visible
|
||||||
|
price: Price
|
||||||
|
client: Client
|
||||||
|
country: Country
|
||||||
|
phone: Phone
|
||||||
|
mobile: Mobile
|
||||||
|
postcode: Postcode
|
||||||
|
street: Street
|
||||||
|
tag: Tag
|
||||||
|
ticketId: Ticket ID
|
||||||
|
confirmed: Confirmed
|
||||||
|
small: Small
|
||||||
|
medium: Medium
|
||||||
|
big: Big
|
||||||
pageTitles:
|
pageTitles:
|
||||||
logIn: Login
|
logIn: Login
|
||||||
addressEdit: Update address
|
addressEdit: Update address
|
||||||
|
@ -297,13 +320,10 @@ globals:
|
||||||
maxTemperature: Max
|
maxTemperature: Max
|
||||||
minTemperature: Min
|
minTemperature: Min
|
||||||
params:
|
params:
|
||||||
id: ID
|
|
||||||
clientFk: Client id
|
clientFk: Client id
|
||||||
salesPersonFk: Sales person
|
salesPersonFk: Sales person
|
||||||
warehouseFk: Warehouse
|
warehouseFk: Warehouse
|
||||||
provinceFk: Province
|
provinceFk: Province
|
||||||
from: From
|
|
||||||
To: To
|
|
||||||
stateFk: State
|
stateFk: State
|
||||||
email: Email
|
email: Email
|
||||||
SSN: SSN
|
SSN: SSN
|
||||||
|
@ -333,16 +353,12 @@ login:
|
||||||
loginError: Invalid username or password
|
loginError: Invalid username or password
|
||||||
fieldRequired: This field is required
|
fieldRequired: This field is required
|
||||||
twoFactorRequired: Two-factor verification required
|
twoFactorRequired: Two-factor verification required
|
||||||
twoFactor:
|
twoFactorRequired:
|
||||||
code: Code
|
|
||||||
validate: Validate
|
validate: Validate
|
||||||
insert: Enter the verification code
|
insert: Enter the verification code
|
||||||
explanation: >-
|
explanation: >-
|
||||||
Please, enter the verification code that we have sent to your email in the
|
Please, enter the verification code that we have sent to your email in the
|
||||||
next 5 minutes
|
next 5 minutes
|
||||||
verifyEmail:
|
|
||||||
pageTitles:
|
|
||||||
verifyEmail: Email verification
|
|
||||||
recoverPassword:
|
recoverPassword:
|
||||||
userOrEmail: User or recovery email
|
userOrEmail: User or recovery email
|
||||||
explanation: >-
|
explanation: >-
|
||||||
|
@ -354,15 +370,7 @@ resetPassword:
|
||||||
entry:
|
entry:
|
||||||
list:
|
list:
|
||||||
newEntry: New entry
|
newEntry: New entry
|
||||||
landed: Landed
|
|
||||||
invoiceNumber: Invoice number
|
|
||||||
supplier: Supplier
|
|
||||||
booked: Booked
|
|
||||||
confirmed: Confirmed
|
|
||||||
ordered: Ordered
|
|
||||||
tableVisibleColumns:
|
tableVisibleColumns:
|
||||||
id: Id
|
|
||||||
reference: Reference
|
|
||||||
created: Creation
|
created: Creation
|
||||||
supplierFk: Supplier
|
supplierFk: Supplier
|
||||||
isBooked: Booked
|
isBooked: Booked
|
||||||
|
@ -375,236 +383,117 @@ entry:
|
||||||
summary:
|
summary:
|
||||||
commission: Commission
|
commission: Commission
|
||||||
currency: Currency
|
currency: Currency
|
||||||
company: Company
|
|
||||||
reference: Reference
|
|
||||||
invoiceNumber: Invoice number
|
invoiceNumber: Invoice number
|
||||||
ordered: Ordered
|
ordered: Ordered
|
||||||
confirmed: Confirmed
|
|
||||||
booked: Booked
|
booked: Booked
|
||||||
excludedFromAvailable: Inventory
|
excludedFromAvailable: Inventory
|
||||||
travelReference: Reference
|
travelReference: Reference
|
||||||
travelAgency: Agency
|
travelAgency: Agency
|
||||||
travelShipped: Shipped
|
travelShipped: Shipped
|
||||||
travelWarehouseOut: Warehouse Out
|
|
||||||
travelDelivered: Delivered
|
travelDelivered: Delivered
|
||||||
travelLanded: Landed
|
travelLanded: Landed
|
||||||
travelWarehouseIn: Warehouse In
|
|
||||||
travelReceived: Received
|
travelReceived: Received
|
||||||
buys: Buys
|
buys: Buys
|
||||||
quantity: Quantity
|
|
||||||
stickers: Stickers
|
stickers: Stickers
|
||||||
package: Package
|
package: Package
|
||||||
weight: Weight
|
|
||||||
packing: Packing
|
packing: Packing
|
||||||
grouping: Grouping
|
grouping: Grouping
|
||||||
buyingValue: Buying value
|
buyingValue: Buying value
|
||||||
import: Import
|
import: Import
|
||||||
pvp: PVP
|
pvp: PVP
|
||||||
item: Item
|
|
||||||
basicData:
|
basicData:
|
||||||
supplier: Supplier
|
|
||||||
travel: Travel
|
travel: Travel
|
||||||
reference: Reference
|
|
||||||
invoiceNumber: Invoice number
|
|
||||||
company: Company
|
|
||||||
currency: Currency
|
currency: Currency
|
||||||
commission: Commission
|
commission: Commission
|
||||||
observation: Observation
|
observation: Observation
|
||||||
ordered: Ordered
|
|
||||||
confirmed: Confirmed
|
|
||||||
booked: Booked
|
booked: Booked
|
||||||
excludedFromAvailable: Inventory
|
excludedFromAvailable: Inventory
|
||||||
agency: Agency
|
|
||||||
warehouseOut: Warehouse Out
|
|
||||||
warehouseIn: Warehouse In
|
|
||||||
shipped: Shipped
|
|
||||||
landed: Landed
|
|
||||||
id: ID
|
|
||||||
buys:
|
buys:
|
||||||
groupingPrice: Grouping price
|
|
||||||
packingPrice: Packing price
|
|
||||||
reference: Reference
|
|
||||||
observations: Observations
|
observations: Observations
|
||||||
item: Item
|
|
||||||
size: Size
|
|
||||||
packing: Packing
|
|
||||||
grouping: Grouping
|
|
||||||
buyingValue: Buying value
|
|
||||||
packagingFk: Box
|
packagingFk: Box
|
||||||
file: File
|
|
||||||
name: Name
|
|
||||||
producer: Producer
|
|
||||||
type: Type
|
|
||||||
color: Color
|
color: Color
|
||||||
id: ID
|
|
||||||
printedStickers: Printed stickers
|
printedStickers: Printed stickers
|
||||||
notes:
|
notes:
|
||||||
observationType: Observation type
|
observationType: Observation type
|
||||||
descriptor:
|
|
||||||
agency: Agency
|
|
||||||
landed: Landed
|
|
||||||
warehouseOut: Warehouse Out
|
|
||||||
latestBuys:
|
latestBuys:
|
||||||
tableVisibleColumns:
|
tableVisibleColumns:
|
||||||
image: Picture
|
image: Picture
|
||||||
itemFk: Item ID
|
itemFk: Item ID
|
||||||
packing: Packing
|
|
||||||
grouping: Grouping
|
|
||||||
quantity: Quantity
|
|
||||||
size: Size
|
|
||||||
tags: Tags
|
|
||||||
type: Type
|
|
||||||
intrastat: Intrastat
|
|
||||||
origin: Origin
|
|
||||||
weightByPiece: Weight/Piece
|
weightByPiece: Weight/Piece
|
||||||
isActive: Active
|
isActive: Active
|
||||||
family: Family
|
family: Family
|
||||||
entryFk: Entry
|
entryFk: Entry
|
||||||
buyingValue: Buying value
|
|
||||||
freightValue: Freight value
|
freightValue: Freight value
|
||||||
comissionValue: Commission value
|
comissionValue: Commission value
|
||||||
description: Description
|
|
||||||
packageValue: Package value
|
packageValue: Package value
|
||||||
isIgnored: Is ignored
|
isIgnored: Is ignored
|
||||||
price2: Grouping
|
price2: Grouping
|
||||||
price3: Packing
|
price3: Packing
|
||||||
minPrice: Min
|
minPrice: Min
|
||||||
ektFk: Ekt
|
ektFk: Ekt
|
||||||
weight: Weight
|
|
||||||
packagingFk: Package
|
|
||||||
packingOut: Package out
|
packingOut: Package out
|
||||||
landing: Landing
|
landing: Landing
|
||||||
isExcludedFromAvailable: Es inventory
|
isExcludedFromAvailable: Es inventory
|
||||||
ticket:
|
ticket:
|
||||||
pageTitles:
|
|
||||||
tickets: Tickets
|
|
||||||
list: List
|
|
||||||
ticketCreate: New ticket
|
|
||||||
summary: Summary
|
|
||||||
basicData: Basic Data
|
|
||||||
boxing: Boxing
|
|
||||||
sms: Sms
|
|
||||||
notes: Notes
|
|
||||||
sale: Sale
|
|
||||||
dms: File management
|
|
||||||
volume: Volume
|
|
||||||
observation: Notes
|
|
||||||
ticketAdvance: Advance tickets
|
|
||||||
futureTickets: Future tickets
|
|
||||||
purchaseRequest: Purchase request
|
|
||||||
weeklyTickets: Weekly tickets
|
|
||||||
list:
|
|
||||||
nickname: Nickname
|
|
||||||
state: State
|
|
||||||
shipped: Shipped
|
|
||||||
landed: Landed
|
|
||||||
salesPerson: Sales person
|
|
||||||
total: Total
|
|
||||||
card:
|
card:
|
||||||
ticketId: Ticket ID
|
|
||||||
state: State
|
|
||||||
customerId: Customer ID
|
customerId: Customer ID
|
||||||
salesPerson: Sales person
|
|
||||||
agency: Agency
|
|
||||||
shipped: Shipped
|
|
||||||
warehouse: Warehouse
|
|
||||||
customerCard: Customer card
|
customerCard: Customer card
|
||||||
alias: Alias
|
|
||||||
ticketList: Ticket List
|
ticketList: Ticket List
|
||||||
newOrder: New Order
|
newOrder: New Order
|
||||||
boxing:
|
boxing:
|
||||||
expedition: Expedition
|
expedition: Expedition
|
||||||
item: Item
|
|
||||||
created: Created
|
created: Created
|
||||||
worker: Worker
|
|
||||||
selectTime: 'Select time:'
|
selectTime: 'Select time:'
|
||||||
selectVideo: 'Select video:'
|
selectVideo: 'Select video:'
|
||||||
notFound: No videos available
|
notFound: No videos available
|
||||||
summary:
|
summary:
|
||||||
state: State
|
|
||||||
salesPerson: Sales person
|
|
||||||
agency: Agency
|
|
||||||
zone: Zone
|
zone: Zone
|
||||||
warehouse: Warehouse
|
|
||||||
collection: Collection
|
collection: Collection
|
||||||
route: Route
|
route: Route
|
||||||
invoice: Invoice
|
invoice: Invoice
|
||||||
shipped: Shipped
|
shipped: Shipped
|
||||||
landed: Landed
|
|
||||||
consigneePhone: Consignee phone
|
consigneePhone: Consignee phone
|
||||||
consigneeMobile: Consignee mobile
|
consigneeMobile: Consignee mobile
|
||||||
consigneeAddress: Consignee address
|
consigneeAddress: Consignee address
|
||||||
clientPhone: Client phone
|
clientPhone: Client phone
|
||||||
clientMobile: Client mobile
|
clientMobile: Client mobile
|
||||||
consignee: Consignee
|
consignee: Consignee
|
||||||
subtotal: Subtotal
|
|
||||||
vat: VAT
|
|
||||||
total: Total
|
total: Total
|
||||||
saleLines: Line items
|
saleLines: Line items
|
||||||
item: Item
|
|
||||||
visible: Visible
|
|
||||||
available: Available
|
available: Available
|
||||||
quantity: Quantity
|
|
||||||
price: Price
|
|
||||||
discount: Discount
|
discount: Discount
|
||||||
packing: Packing
|
packing: Packing
|
||||||
hasComponentLack: Component lack
|
hasComponentLack: Component lack
|
||||||
itemShortage: Not visible
|
itemShortage: Not visible
|
||||||
claim: Claim
|
claim: Claim
|
||||||
reserved: Reserved
|
reserved: Reserved
|
||||||
created: Created
|
|
||||||
package: Package
|
package: Package
|
||||||
taxClass: Tax class
|
taxClass: Tax class
|
||||||
services: Services
|
services: Services
|
||||||
requester: Requester
|
requester: Requester
|
||||||
atender: Atender
|
atender: Atender
|
||||||
request: Request
|
request: Request
|
||||||
weight: Weight
|
|
||||||
goTo: Go to
|
goTo: Go to
|
||||||
summaryAmount: Summary
|
summaryAmount: Summary
|
||||||
purchaseRequest: Purchase request
|
purchaseRequest: Purchase request
|
||||||
service: Service
|
service: Service
|
||||||
description: Description
|
|
||||||
attender: Attender
|
attender: Attender
|
||||||
ok: Ok
|
ok: Ok
|
||||||
create:
|
create:
|
||||||
client: Client
|
|
||||||
address: Address
|
address: Address
|
||||||
landed: Landed
|
|
||||||
warehouse: Warehouse
|
|
||||||
agency: Agency
|
|
||||||
invoiceOut:
|
invoiceOut:
|
||||||
list:
|
|
||||||
ref: Reference
|
|
||||||
issued: Issued
|
|
||||||
shortIssued: Issued
|
|
||||||
client: Client
|
|
||||||
created: Created
|
|
||||||
shortCreated: Created
|
|
||||||
company: Company
|
|
||||||
dued: Due date
|
|
||||||
shortDued: Due date
|
|
||||||
amount: Amount
|
|
||||||
card:
|
card:
|
||||||
issued: Issued
|
issued: Issued
|
||||||
client: Client
|
|
||||||
company: Company
|
|
||||||
customerCard: Customer card
|
customerCard: Customer card
|
||||||
summary:
|
summary:
|
||||||
issued: Issued
|
issued: Issued
|
||||||
created: Created
|
|
||||||
dued: Due
|
dued: Due
|
||||||
booked: Booked
|
booked: Booked
|
||||||
company: Company
|
|
||||||
taxBreakdown: Tax breakdown
|
taxBreakdown: Tax breakdown
|
||||||
type: Type
|
|
||||||
taxableBase: Taxable base
|
taxableBase: Taxable base
|
||||||
rate: Rate
|
rate: Rate
|
||||||
fee: Fee
|
fee: Fee
|
||||||
tickets: Tickets
|
tickets: Tickets
|
||||||
ticketId: Ticket id
|
|
||||||
nickname: Alias
|
|
||||||
shipped: Shipped
|
|
||||||
totalWithVat: Amount
|
totalWithVat: Amount
|
||||||
globalInvoices:
|
globalInvoices:
|
||||||
errors:
|
errors:
|
||||||
|
@ -618,22 +507,14 @@ invoiceOut:
|
||||||
noTicketsToInvoice: There are not tickets to invoice
|
noTicketsToInvoice: There are not tickets to invoice
|
||||||
criticalInvoiceError: 'Critical invoicing error, process stopped'
|
criticalInvoiceError: 'Critical invoicing error, process stopped'
|
||||||
table:
|
table:
|
||||||
client: Client
|
|
||||||
addressId: Address id
|
addressId: Address id
|
||||||
streetAddress: Street
|
streetAddress: Street
|
||||||
statusCard:
|
statusCard:
|
||||||
percentageText: '{getPercentage}% {getAddressNumber} of {getNAddresses}'
|
percentageText: '{getPercentage}% {getAddressNumber} of {getNAddresses}'
|
||||||
pdfsNumberText: '{nPdfs} of {totalPdfs} PDFs'
|
pdfsNumberText: '{nPdfs} of {totalPdfs} PDFs'
|
||||||
negativeBases:
|
negativeBases:
|
||||||
from: From
|
|
||||||
to: To
|
|
||||||
company: Company
|
|
||||||
country: Country
|
|
||||||
clientId: Client Id
|
clientId: Client Id
|
||||||
client: Client
|
|
||||||
amount: Amount
|
|
||||||
base: Base
|
base: Base
|
||||||
ticketId: Ticket Id
|
|
||||||
active: Active
|
active: Active
|
||||||
hasToInvoice: Has to Invoice
|
hasToInvoice: Has to Invoice
|
||||||
verifiedData: Verified Data
|
verifiedData: Verified Data
|
||||||
|
@ -646,15 +527,6 @@ shelving:
|
||||||
priority: Priority
|
priority: Priority
|
||||||
newShelving: New Shelving
|
newShelving: New Shelving
|
||||||
summary:
|
summary:
|
||||||
code: Code
|
|
||||||
parking: Parking
|
|
||||||
priority: Priority
|
|
||||||
worker: Worker
|
|
||||||
recyclable: Recyclable
|
|
||||||
basicData:
|
|
||||||
code: Code
|
|
||||||
parking: Parking
|
|
||||||
priority: Priority
|
|
||||||
recyclable: Recyclable
|
recyclable: Recyclable
|
||||||
parking:
|
parking:
|
||||||
pickingOrder: Picking order
|
pickingOrder: Picking order
|
||||||
|
@ -667,56 +539,27 @@ parking:
|
||||||
order:
|
order:
|
||||||
field:
|
field:
|
||||||
salesPersonFk: Sales Person
|
salesPersonFk: Sales Person
|
||||||
clientFk: Client
|
|
||||||
isConfirmed: Confirmed
|
|
||||||
created: Created
|
|
||||||
landed: Landed
|
|
||||||
hour: Hour
|
|
||||||
agency: Agency
|
|
||||||
total: Total
|
|
||||||
form:
|
form:
|
||||||
clientFk: Client
|
clientFk: Client
|
||||||
addressFk: Address
|
addressFk: Address
|
||||||
landed: Landed
|
|
||||||
agencyModeFk: Agency
|
agencyModeFk: Agency
|
||||||
list:
|
list:
|
||||||
newOrder: New Order
|
newOrder: New Order
|
||||||
summary:
|
summary:
|
||||||
basket: Basket
|
basket: Basket
|
||||||
nickname: Nickname
|
|
||||||
company: Company
|
|
||||||
confirmed: Confirmed
|
|
||||||
notConfirmed: Not confirmed
|
notConfirmed: Not confirmed
|
||||||
created: Created
|
created: Created
|
||||||
landed: Landed
|
|
||||||
phone: Phone
|
|
||||||
createdFrom: Created From
|
createdFrom: Created From
|
||||||
address: Address
|
address: Address
|
||||||
notes: Notes
|
|
||||||
subtotal: Subtotal
|
|
||||||
total: Total
|
total: Total
|
||||||
vat: VAT
|
|
||||||
state: State
|
|
||||||
alias: Alias
|
|
||||||
items: Items
|
items: Items
|
||||||
orderTicketList: Order Ticket List
|
orderTicketList: Order Ticket List
|
||||||
details: Details
|
|
||||||
item: Item
|
|
||||||
quantity: Quantity
|
|
||||||
price: Price
|
|
||||||
amount: Amount
|
amount: Amount
|
||||||
confirm: Confirm
|
confirm: Confirm
|
||||||
confirmLines: Confirm lines
|
confirmLines: Confirm lines
|
||||||
department:
|
department:
|
||||||
pageTitles:
|
|
||||||
basicData: Basic data
|
|
||||||
department: Department
|
|
||||||
summary: Summary
|
|
||||||
name: Name
|
|
||||||
code: Code
|
|
||||||
chat: Chat
|
chat: Chat
|
||||||
bossDepartment: Boss Department
|
bossDepartment: Boss Department
|
||||||
email: Email
|
|
||||||
selfConsumptionCustomer: Self-consumption customer
|
selfConsumptionCustomer: Self-consumption customer
|
||||||
telework: Telework
|
telework: Telework
|
||||||
notifyOnErrors: Notify on errors
|
notifyOnErrors: Notify on errors
|
||||||
|
@ -725,47 +568,11 @@ department:
|
||||||
hasToSendMail: Send check-ins by email
|
hasToSendMail: Send check-ins by email
|
||||||
departmentRemoved: Department removed
|
departmentRemoved: Department removed
|
||||||
worker:
|
worker:
|
||||||
pageTitles:
|
|
||||||
workers: Workers
|
|
||||||
list: List
|
|
||||||
basicData: Basic data
|
|
||||||
summary: Summary
|
|
||||||
notifications: Notifications
|
|
||||||
workerCreate: New worker
|
|
||||||
department: Department
|
|
||||||
pda: PDA
|
|
||||||
notes: Notas
|
|
||||||
dms: My documentation
|
|
||||||
pbx: Private Branch Exchange
|
|
||||||
log: Log
|
|
||||||
calendar: Calendar
|
|
||||||
timeControl: Time control
|
|
||||||
locker: Locker
|
|
||||||
balance: Balance
|
|
||||||
medical: Medical
|
|
||||||
operator: Operator
|
|
||||||
list:
|
list:
|
||||||
name: Name
|
|
||||||
email: Email
|
|
||||||
phone: Phone
|
|
||||||
mobile: Mobile
|
|
||||||
active: Active
|
|
||||||
department: Department
|
department: Department
|
||||||
schedule: Schedule
|
schedule: Schedule
|
||||||
newWorker: New worker
|
newWorker: New worker
|
||||||
card:
|
|
||||||
workerId: Worker ID
|
|
||||||
user: User
|
|
||||||
name: Name
|
|
||||||
email: Email
|
|
||||||
phone: Phone
|
|
||||||
mobile: Mobile
|
|
||||||
active: Active
|
|
||||||
warehouse: Warehouse
|
|
||||||
agency: Agency
|
|
||||||
salesPerson: Sales person
|
|
||||||
summary:
|
summary:
|
||||||
basicData: Basic data
|
|
||||||
boss: Boss
|
boss: Boss
|
||||||
phoneExtension: Phone extension
|
phoneExtension: Phone extension
|
||||||
entPhone: Enterprise phone
|
entPhone: Enterprise phone
|
||||||
|
@ -797,19 +604,12 @@ worker:
|
||||||
serialNumber: Serial number
|
serialNumber: Serial number
|
||||||
removePDA: Deallocate PDA
|
removePDA: Deallocate PDA
|
||||||
create:
|
create:
|
||||||
name: Name
|
|
||||||
lastName: Last name
|
lastName: Last name
|
||||||
birth: Birth
|
birth: Birth
|
||||||
fi: Fi
|
fi: Fi
|
||||||
code: Worker code
|
code: Worker code
|
||||||
phone: Phone
|
|
||||||
postcode: Postcode
|
|
||||||
province: Province
|
|
||||||
city: City
|
|
||||||
street: Street
|
|
||||||
webUser: Web user
|
webUser: Web user
|
||||||
personalEmail: Personal email
|
personalEmail: Personal email
|
||||||
company: Company
|
|
||||||
boss: Boss
|
boss: Boss
|
||||||
payMethods: Pay method
|
payMethods: Pay method
|
||||||
iban: IBAN
|
iban: IBAN
|
||||||
|
@ -821,16 +621,13 @@ worker:
|
||||||
endDate: End date
|
endDate: End date
|
||||||
center: Training center
|
center: Training center
|
||||||
invoice: Invoice
|
invoice: Invoice
|
||||||
amount: Amount
|
|
||||||
remark: Remark
|
remark: Remark
|
||||||
hasDiploma: Has diploma
|
hasDiploma: Has diploma
|
||||||
medical:
|
medical:
|
||||||
tableVisibleColumns:
|
tableVisibleColumns:
|
||||||
date: Date
|
|
||||||
time: Hour
|
time: Hour
|
||||||
center: Formation Center
|
center: Formation Center
|
||||||
invoice: Invoice
|
invoice: Invoice
|
||||||
amount: Amount
|
|
||||||
isFit: Fit
|
isFit: Fit
|
||||||
remark: Observations
|
remark: Observations
|
||||||
imageNotFound: Image not found
|
imageNotFound: Image not found
|
||||||
|
@ -854,18 +651,7 @@ worker:
|
||||||
isOnReservationMode: Reservation mode
|
isOnReservationMode: Reservation mode
|
||||||
machine: Machine
|
machine: Machine
|
||||||
wagon:
|
wagon:
|
||||||
pageTitles:
|
|
||||||
wagons: Wagons
|
|
||||||
wagonsList: Wagons List
|
|
||||||
wagonCreate: Create wagon
|
|
||||||
wagonEdit: Edit wagon
|
|
||||||
typesList: Types List
|
|
||||||
typeCreate: Create type
|
|
||||||
typeEdit: Edit type
|
|
||||||
wagonCounter: Trolley counter
|
|
||||||
wagonTray: Tray List
|
|
||||||
type:
|
type:
|
||||||
name: Name
|
|
||||||
submit: Submit
|
submit: Submit
|
||||||
reset: Reset
|
reset: Reset
|
||||||
trayColor: Tray color
|
trayColor: Tray color
|
||||||
|
@ -873,13 +659,10 @@ wagon:
|
||||||
list:
|
list:
|
||||||
plate: Plate
|
plate: Plate
|
||||||
volume: Volume
|
volume: Volume
|
||||||
type: Type
|
|
||||||
remove: Remove
|
remove: Remove
|
||||||
removeItem: Wagon removed successfully
|
removeItem: Wagon removed successfully
|
||||||
create:
|
create:
|
||||||
plate: Plate
|
plate: Plate
|
||||||
volume: Volume
|
|
||||||
type: Type
|
|
||||||
label: Label
|
label: Label
|
||||||
warnings:
|
warnings:
|
||||||
noData: No data available
|
noData: No data available
|
||||||
|
@ -896,26 +679,17 @@ wagon:
|
||||||
supplier:
|
supplier:
|
||||||
list:
|
list:
|
||||||
payMethod: Pay method
|
payMethod: Pay method
|
||||||
payDeadline: Pay deadline
|
|
||||||
payDay: Pay day
|
|
||||||
account: Account
|
account: Account
|
||||||
newSupplier: New supplier
|
newSupplier: New supplier
|
||||||
tableVisibleColumns:
|
tableVisibleColumns:
|
||||||
id: Id
|
|
||||||
name: Name
|
|
||||||
nif: NIF/CIF
|
nif: NIF/CIF
|
||||||
nickname: Alias
|
|
||||||
account: Account
|
account: Account
|
||||||
payMethod: Pay Method
|
|
||||||
payDay: Pay Day
|
payDay: Pay Day
|
||||||
country: Country
|
|
||||||
summary:
|
summary:
|
||||||
responsible: Responsible
|
responsible: Responsible
|
||||||
notes: Notes
|
|
||||||
verified: Verified
|
verified: Verified
|
||||||
isActive: Is active
|
isActive: Is active
|
||||||
billingData: Billing data
|
billingData: Billing data
|
||||||
payMethod: Pay method
|
|
||||||
payDeadline: Pay deadline
|
payDeadline: Pay deadline
|
||||||
payDay: Pay day
|
payDay: Pay day
|
||||||
account: Account
|
account: Account
|
||||||
|
@ -928,20 +702,16 @@ supplier:
|
||||||
fiscalAddress: Fiscal address
|
fiscalAddress: Fiscal address
|
||||||
socialName: Social name
|
socialName: Social name
|
||||||
taxNumber: Tax number
|
taxNumber: Tax number
|
||||||
street: Street
|
|
||||||
city: City
|
city: City
|
||||||
postCode: Postcode
|
|
||||||
province: Province
|
|
||||||
country: Country
|
|
||||||
create:
|
create:
|
||||||
supplierName: Supplier name
|
supplierName: Supplier name
|
||||||
basicData:
|
basicData:
|
||||||
alias: Alias
|
|
||||||
workerFk: Responsible
|
workerFk: Responsible
|
||||||
isSerious: Verified
|
isSerious: Verified
|
||||||
isActive: Active
|
isActive: Active
|
||||||
isPayMethodChecked: PayMethod checked
|
isPayMethodChecked: PayMethod checked
|
||||||
note: Notes
|
note: Notes
|
||||||
|
size: Size
|
||||||
fiscalData:
|
fiscalData:
|
||||||
name: Social name *
|
name: Social name *
|
||||||
nif: Tax number *
|
nif: Tax number *
|
||||||
|
@ -950,36 +720,18 @@ supplier:
|
||||||
sageWithholdingFk: Sage withholding
|
sageWithholdingFk: Sage withholding
|
||||||
sageTransactionTypeFk: Sage transaction type
|
sageTransactionTypeFk: Sage transaction type
|
||||||
supplierActivityFk: Supplier activity
|
supplierActivityFk: Supplier activity
|
||||||
healthRegister: Health register
|
|
||||||
street: Street
|
|
||||||
postcode: Postcode
|
|
||||||
city: City *
|
|
||||||
provinceFk: Province
|
|
||||||
country: Country
|
|
||||||
isTrucker: Trucker
|
isTrucker: Trucker
|
||||||
isVies: Vies
|
isVies: Vies
|
||||||
billingData:
|
billingData:
|
||||||
payMethodFk: Billing data
|
payMethodFk: Billing data
|
||||||
payDemFk: Payment deadline
|
payDemFk: Payment deadline
|
||||||
payDay: Pay day
|
|
||||||
accounts:
|
accounts:
|
||||||
iban: Iban
|
iban: Iban
|
||||||
bankEntity: Bank entity
|
bankEntity: Bank entity
|
||||||
beneficiary: Beneficiary
|
beneficiary: Beneficiary
|
||||||
contacts:
|
contacts:
|
||||||
name: Name
|
|
||||||
phone: Phone
|
|
||||||
mobile: Mobile
|
|
||||||
email: Email
|
email: Email
|
||||||
observation: Notes
|
observation: Notes
|
||||||
addresses:
|
|
||||||
street: Street
|
|
||||||
postcode: Postcode
|
|
||||||
phone: Phone
|
|
||||||
name: Name
|
|
||||||
city: City
|
|
||||||
province: Province
|
|
||||||
mobile: Mobile
|
|
||||||
agencyTerms:
|
agencyTerms:
|
||||||
agencyFk: Agency
|
agencyFk: Agency
|
||||||
minimumM3: Minimum M3
|
minimumM3: Minimum M3
|
||||||
|
@ -991,25 +743,16 @@ supplier:
|
||||||
addRow: Add row
|
addRow: Add row
|
||||||
consumption:
|
consumption:
|
||||||
entry: Entry
|
entry: Entry
|
||||||
date: Date
|
|
||||||
reference: Reference
|
|
||||||
travel:
|
travel:
|
||||||
travelList:
|
travelList:
|
||||||
tableVisibleColumns:
|
tableVisibleColumns:
|
||||||
id: Id
|
|
||||||
ref: Reference
|
ref: Reference
|
||||||
agency: Agency
|
|
||||||
shipped: Shipped
|
|
||||||
landed: Landed
|
|
||||||
shipHour: Shipment Hour
|
shipHour: Shipment Hour
|
||||||
landHour: Landing Hour
|
landHour: Landing Hour
|
||||||
warehouseIn: Warehouse in
|
|
||||||
warehouseOut: Warehouse out
|
|
||||||
totalEntries: Total entries
|
totalEntries: Total entries
|
||||||
totalEntriesTooltip: Total entries
|
totalEntriesTooltip: Total entries
|
||||||
daysOnward: Landed days onwards
|
daysOnward: Landed days onwards
|
||||||
summary:
|
summary:
|
||||||
confirmed: Confirmed
|
|
||||||
entryId: Entry Id
|
entryId: Entry Id
|
||||||
freight: Freight
|
freight: Freight
|
||||||
package: Package
|
package: Package
|
||||||
|
@ -1022,64 +765,89 @@ travel:
|
||||||
AddEntry: Add entry
|
AddEntry: Add entry
|
||||||
thermographs: Thermographs
|
thermographs: Thermographs
|
||||||
hb: HB
|
hb: HB
|
||||||
variables:
|
|
||||||
search: Id/Reference
|
|
||||||
agencyModeFk: Agency
|
|
||||||
warehouseInFk: ' Warehouse In'
|
|
||||||
warehouseOutFk: Warehouse Out
|
|
||||||
landedFrom: Landed from
|
|
||||||
landedTo: Landed to
|
|
||||||
continent: Continent out
|
|
||||||
totalEntries: Total entries
|
|
||||||
basicData:
|
basicData:
|
||||||
reference: Reference
|
|
||||||
agency: Agency
|
|
||||||
shipped: Shipped
|
|
||||||
landed: Landed
|
|
||||||
warehouseOut: Warehouse Out
|
|
||||||
warehouseIn: Warehouse In
|
|
||||||
delivered: Delivered
|
|
||||||
received: Received
|
|
||||||
daysInForward: Days in forward
|
daysInForward: Days in forward
|
||||||
thermographs:
|
thermographs:
|
||||||
code: Code
|
|
||||||
temperature: Temperature
|
temperature: Temperature
|
||||||
state: State
|
|
||||||
destination: Destination
|
destination: Destination
|
||||||
created: Created
|
|
||||||
thermograph: Thermograph
|
thermograph: Thermograph
|
||||||
reference: Reference
|
|
||||||
type: Type
|
|
||||||
company: Company
|
|
||||||
warehouse: Warehouse
|
|
||||||
travelFileDescription: 'Travel id { travelId }'
|
travelFileDescription: 'Travel id { travelId }'
|
||||||
file: File
|
item:
|
||||||
|
descriptor:
|
||||||
|
buyer: Buyer
|
||||||
|
color: Color
|
||||||
|
category: Category
|
||||||
|
available: Available
|
||||||
|
warehouseText: 'Calculated on the warehouse of { warehouseName }'
|
||||||
|
itemDiary: Item diary
|
||||||
|
list:
|
||||||
|
id: Identifier
|
||||||
|
stems: Stems
|
||||||
|
category: Category
|
||||||
|
typeName: Type
|
||||||
|
isActive: Active
|
||||||
|
userName: Buyer
|
||||||
|
weightByPiece: Weight/Piece
|
||||||
|
stemMultiplier: Multiplier
|
||||||
|
fixedPrice:
|
||||||
|
itemFk: Item ID
|
||||||
|
groupingPrice: Grouping price
|
||||||
|
packingPrice: Packing price
|
||||||
|
hasMinPrice: Has min price
|
||||||
|
minPrice: Min price
|
||||||
|
started: Started
|
||||||
|
ended: Ended
|
||||||
|
create:
|
||||||
|
priority: Priority
|
||||||
|
buyRequest:
|
||||||
|
requester: Requester
|
||||||
|
requested: Requested
|
||||||
|
attender: Atender
|
||||||
|
achieved: Achieved
|
||||||
|
concept: Concept
|
||||||
|
summary:
|
||||||
|
otherData: Other data
|
||||||
|
tax: Tax
|
||||||
|
botanical: Botanical
|
||||||
|
barcode: Barcode
|
||||||
|
completeName: Complete name
|
||||||
|
family: Familiy
|
||||||
|
stems: Stems
|
||||||
|
multiplier: Multiplier
|
||||||
|
buyer: Buyer
|
||||||
|
doPhoto: Do photo
|
||||||
|
intrastatCode: Intrastat code
|
||||||
|
ref: Reference
|
||||||
|
relevance: Relevance
|
||||||
|
weight: Weight (gram)/stem
|
||||||
|
units: Units/box
|
||||||
|
expense: Expense
|
||||||
|
generic: Generic
|
||||||
|
recycledPlastic: Recycled plastic
|
||||||
|
nonRecycledPlastic: Non recycled plastic
|
||||||
|
minSalesQuantity: Min sales quantity
|
||||||
|
genus: Genus
|
||||||
|
specie: Specie
|
||||||
components:
|
components:
|
||||||
topbar: {}
|
topbar: {}
|
||||||
itemsFilterPanel:
|
itemsFilterPanel:
|
||||||
typeFk: Type
|
typeFk: Type
|
||||||
tag: Tag
|
|
||||||
value: Value
|
value: Value
|
||||||
# ItemFixedPriceFilter
|
# ItemFixedPriceFilter
|
||||||
buyerFk: Buyer
|
buyerFk: Buyer
|
||||||
warehouseFk: Warehouse
|
|
||||||
started: From
|
started: From
|
||||||
ended: To
|
ended: To
|
||||||
mine: For me
|
mine: For me
|
||||||
hasMinPrice: Minimum price
|
hasMinPrice: Minimum price
|
||||||
# LatestBuysFilter
|
# LatestBuysFilter
|
||||||
salesPersonFk: Buyer
|
salesPersonFk: Buyer
|
||||||
supplierFk: Supplier
|
|
||||||
from: From
|
from: From
|
||||||
to: To
|
|
||||||
active: Is active
|
active: Is active
|
||||||
visible: Is visible
|
|
||||||
floramondo: Is floramondo
|
floramondo: Is floramondo
|
||||||
showBadDates: Show future items
|
showBadDates: Show future items
|
||||||
userPanel:
|
userPanel:
|
||||||
copyToken: Token copied to clipboard
|
copyToken: Token copied to clipboard
|
||||||
settings: Settings
|
settings: Settings
|
||||||
logOut: Log Out
|
|
||||||
localWarehouse: Local warehouse
|
localWarehouse: Local warehouse
|
||||||
localBank: Local bank
|
localBank: Local bank
|
||||||
localCompany: Local company
|
localCompany: Local company
|
||||||
|
@ -1087,7 +855,6 @@ components:
|
||||||
userCompany: User company
|
userCompany: User company
|
||||||
smartCard:
|
smartCard:
|
||||||
downloadFile: Download file
|
downloadFile: Download file
|
||||||
clone: Clone
|
|
||||||
openCard: View
|
openCard: View
|
||||||
openSummary: Summary
|
openSummary: Summary
|
||||||
cardDescriptor:
|
cardDescriptor:
|
||||||
|
|
|
@ -58,8 +58,8 @@ globals:
|
||||||
downloadCSVSuccess: Descarga de CSV exitosa
|
downloadCSVSuccess: Descarga de CSV exitosa
|
||||||
reference: Referencia
|
reference: Referencia
|
||||||
agency: Agencia
|
agency: Agencia
|
||||||
wareHouseOut: Alm. salida
|
warehouseOut: Alm. salida
|
||||||
wareHouseIn: Alm. entrada
|
warehouseIn: Alm. entrada
|
||||||
landed: F. entrega
|
landed: F. entrega
|
||||||
shipped: F. envío
|
shipped: F. envío
|
||||||
totalEntries: Ent. totales
|
totalEntries: Ent. totales
|
||||||
|
@ -108,6 +108,29 @@ globals:
|
||||||
weight: Peso
|
weight: Peso
|
||||||
error: ¡Ups! Algo salió mal
|
error: ¡Ups! Algo salió mal
|
||||||
recalc: Recalcular
|
recalc: Recalcular
|
||||||
|
alias: Alias
|
||||||
|
vat: IVA
|
||||||
|
intrastat: Intrastat
|
||||||
|
tags: Etiquetas
|
||||||
|
size: Medida
|
||||||
|
producer: Productor
|
||||||
|
origin: Origen
|
||||||
|
state: Estado
|
||||||
|
subtotal: Subtotal
|
||||||
|
visible: Visible
|
||||||
|
price: Precio
|
||||||
|
client: Cliente
|
||||||
|
country: País
|
||||||
|
phone: Teléfono
|
||||||
|
mobile: Móvil
|
||||||
|
postcode: Código postal
|
||||||
|
street: Dirección
|
||||||
|
tag: Etiqueta
|
||||||
|
ticketId: ID ticket
|
||||||
|
confirmed: Confirmado
|
||||||
|
small: Pequeño/a
|
||||||
|
medium: Mediano/a
|
||||||
|
big: Grande
|
||||||
pageTitles:
|
pageTitles:
|
||||||
logIn: Inicio de sesión
|
logIn: Inicio de sesión
|
||||||
addressEdit: Modificar consignatario
|
addressEdit: Modificar consignatario
|
||||||
|
@ -301,13 +324,10 @@ globals:
|
||||||
maxTemperature: Máx
|
maxTemperature: Máx
|
||||||
minTemperature: Mín
|
minTemperature: Mín
|
||||||
params:
|
params:
|
||||||
id: Id
|
|
||||||
clientFk: Id cliente
|
clientFk: Id cliente
|
||||||
salesPersonFk: Comercial
|
salesPersonFk: Comercial
|
||||||
warehouseFk: Almacén
|
warehouseFk: Almacén
|
||||||
provinceFk: Provincia
|
provinceFk: Provincia
|
||||||
from: Desde
|
|
||||||
To: Hasta
|
|
||||||
stateFk: Estado
|
stateFk: Estado
|
||||||
departmentFk: Departamento
|
departmentFk: Departamento
|
||||||
email: Correo
|
email: Correo
|
||||||
|
@ -338,13 +358,9 @@ login:
|
||||||
fieldRequired: Este campo es obligatorio
|
fieldRequired: Este campo es obligatorio
|
||||||
twoFactorRequired: Verificación de doble factor requerida
|
twoFactorRequired: Verificación de doble factor requerida
|
||||||
twoFactor:
|
twoFactor:
|
||||||
code: Código
|
|
||||||
validate: Validar
|
validate: Validar
|
||||||
insert: Introduce el código de verificación
|
insert: Introduce el código de verificación
|
||||||
explanation: Por favor introduce el código de verificación que te hemos enviado a tu email en los próximos 5 minutos
|
explanation: Por favor introduce el código de verificación que te hemos enviado a tu email en los próximos 5 minutos
|
||||||
verifyEmail:
|
|
||||||
pageTitles:
|
|
||||||
verifyEmail: Verificación de correo
|
|
||||||
recoverPassword:
|
recoverPassword:
|
||||||
userOrEmail: Usuario o correo de recuperación
|
userOrEmail: Usuario o correo de recuperación
|
||||||
explanation: >-
|
explanation: >-
|
||||||
|
@ -356,15 +372,7 @@ resetPassword:
|
||||||
entry:
|
entry:
|
||||||
list:
|
list:
|
||||||
newEntry: Nueva entrada
|
newEntry: Nueva entrada
|
||||||
landed: F. entrega
|
|
||||||
invoiceNumber: Núm. factura
|
|
||||||
supplier: Proveedor
|
|
||||||
booked: Asentado
|
|
||||||
confirmed: Confirmado
|
|
||||||
ordered: Pedida
|
|
||||||
tableVisibleColumns:
|
tableVisibleColumns:
|
||||||
id: Id
|
|
||||||
reference: Referencia
|
|
||||||
created: Creación
|
created: Creación
|
||||||
supplierFk: Proveedor
|
supplierFk: Proveedor
|
||||||
isBooked: Asentado
|
isBooked: Asentado
|
||||||
|
@ -377,11 +385,8 @@ entry:
|
||||||
summary:
|
summary:
|
||||||
commission: Comisión
|
commission: Comisión
|
||||||
currency: Moneda
|
currency: Moneda
|
||||||
company: Empresa
|
|
||||||
reference: Referencia
|
|
||||||
invoiceNumber: Núm. factura
|
invoiceNumber: Núm. factura
|
||||||
ordered: Pedida
|
ordered: Pedida
|
||||||
confirmed: Confirmada
|
|
||||||
booked: Contabilizada
|
booked: Contabilizada
|
||||||
excludedFromAvailable: Inventario
|
excludedFromAvailable: Inventario
|
||||||
travelReference: Referencia
|
travelReference: Referencia
|
||||||
|
@ -390,230 +395,108 @@ entry:
|
||||||
travelWarehouseOut: Alm. salida
|
travelWarehouseOut: Alm. salida
|
||||||
travelDelivered: Enviada
|
travelDelivered: Enviada
|
||||||
travelLanded: F. entrega
|
travelLanded: F. entrega
|
||||||
travelWarehouseIn: Alm. entrada
|
|
||||||
travelReceived: Recibida
|
travelReceived: Recibida
|
||||||
buys: Compras
|
buys: Compras
|
||||||
quantity: Cantidad
|
|
||||||
stickers: Etiquetas
|
stickers: Etiquetas
|
||||||
package: Embalaje
|
package: Embalaje
|
||||||
weight: Peso
|
|
||||||
packing: Packing
|
packing: Packing
|
||||||
grouping: Grouping
|
grouping: Grouping
|
||||||
buyingValue: Coste
|
buyingValue: Coste
|
||||||
import: Importe
|
import: Importe
|
||||||
pvp: PVP
|
pvp: PVP
|
||||||
item: Artículo
|
|
||||||
basicData:
|
basicData:
|
||||||
supplier: Proveedor
|
|
||||||
travel: Envío
|
travel: Envío
|
||||||
reference: Referencia
|
|
||||||
invoiceNumber: Núm. factura
|
|
||||||
company: Empresa
|
|
||||||
currency: Moneda
|
currency: Moneda
|
||||||
observation: Observación
|
observation: Observación
|
||||||
commission: Comisión
|
commission: Comisión
|
||||||
ordered: Pedida
|
|
||||||
confirmed: Confirmado
|
|
||||||
booked: Asentado
|
booked: Asentado
|
||||||
excludedFromAvailable: Inventario
|
excludedFromAvailable: Inventario
|
||||||
agency: Agencia
|
|
||||||
warehouseOut: Alm. salida
|
|
||||||
warehouseIn: Alm. entrada
|
|
||||||
shipped: F. envío
|
|
||||||
landed: F. entrega
|
|
||||||
id: ID
|
|
||||||
buys:
|
buys:
|
||||||
groupingPrice: Precio grouping
|
|
||||||
packingPrice: Precio packing
|
|
||||||
reference: Referencia
|
|
||||||
observations: Observaciónes
|
observations: Observaciónes
|
||||||
item: Artículo
|
|
||||||
size: Medida
|
|
||||||
packing: Packing
|
|
||||||
grouping: Grouping
|
|
||||||
buyingValue: Coste
|
|
||||||
packagingFk: Embalaje
|
packagingFk: Embalaje
|
||||||
file: Fichero
|
|
||||||
name: Nombre
|
|
||||||
producer: Productor
|
|
||||||
type: Tipo
|
|
||||||
color: Color
|
color: Color
|
||||||
id: ID
|
|
||||||
printedStickers: Etiquetas impresas
|
printedStickers: Etiquetas impresas
|
||||||
notes:
|
notes:
|
||||||
observationType: Tipo de observación
|
observationType: Tipo de observación
|
||||||
descriptor:
|
|
||||||
agency: Agencia
|
|
||||||
landed: F. entrega
|
|
||||||
warehouseOut: Alm. salida
|
|
||||||
latestBuys:
|
latestBuys:
|
||||||
tableVisibleColumns:
|
tableVisibleColumns:
|
||||||
image: Foto
|
image: Foto
|
||||||
itemFk: Id Artículo
|
itemFk: Id Artículo
|
||||||
packing: packing
|
|
||||||
grouping: Grouping
|
|
||||||
quantity: Cantidad
|
|
||||||
size: Medida
|
|
||||||
tags: Etiquetas
|
|
||||||
type: Tipo
|
|
||||||
intrastat: Intrastat
|
|
||||||
origin: Origen
|
|
||||||
weightByPiece: Peso (gramos)/tallo
|
weightByPiece: Peso (gramos)/tallo
|
||||||
isActive: Activo
|
isActive: Activo
|
||||||
family: Familia
|
family: Familia
|
||||||
entryFk: Entrada
|
entryFk: Entrada
|
||||||
buyingValue: Coste
|
|
||||||
freightValue: Porte
|
freightValue: Porte
|
||||||
comissionValue: Comisión
|
comissionValue: Comisión
|
||||||
description: Descripción
|
|
||||||
packageValue: Embalaje
|
packageValue: Embalaje
|
||||||
isIgnored: Ignorado
|
isIgnored: Ignorado
|
||||||
price2: Grouping
|
price2: Grouping
|
||||||
price3: Packing
|
price3: Packing
|
||||||
minPrice: Min
|
minPrice: Min
|
||||||
ektFk: Ekt
|
ektFk: Ekt
|
||||||
weight: Peso
|
|
||||||
packagingFk: Embalaje
|
|
||||||
packingOut: Embalaje envíos
|
packingOut: Embalaje envíos
|
||||||
landing: Llegada
|
landing: Llegada
|
||||||
isExcludedFromAvailable: Es inventario
|
isExcludedFromAvailable: Es inventario
|
||||||
ticket:
|
ticket:
|
||||||
pageTitles:
|
|
||||||
tickets: Tickets
|
|
||||||
list: Listado
|
|
||||||
ticketCreate: Nuevo ticket
|
|
||||||
summary: Resumen
|
|
||||||
basicData: Datos básicos
|
|
||||||
boxing: Encajado
|
|
||||||
sms: Sms
|
|
||||||
notes: Notas
|
|
||||||
sale: Lineas del pedido
|
|
||||||
dms: Gestión documental
|
|
||||||
volume: Volumen
|
|
||||||
observation: Notas
|
|
||||||
ticketAdvance: Adelantar tickets
|
|
||||||
futureTickets: Tickets a futuro
|
|
||||||
expedition: Expedición
|
|
||||||
purchaseRequest: Petición de compra
|
|
||||||
weeklyTickets: Tickets programados
|
|
||||||
saleTracking: Líneas preparadas
|
|
||||||
services: Servicios
|
|
||||||
tracking: Estados
|
|
||||||
components: Componentes
|
|
||||||
pictures: Fotos
|
|
||||||
packages: Embalajes
|
|
||||||
list:
|
|
||||||
nickname: Alias
|
|
||||||
state: Estado
|
|
||||||
shipped: Enviado
|
|
||||||
landed: Entregado
|
|
||||||
salesPerson: Comercial
|
|
||||||
total: Total
|
|
||||||
card:
|
card:
|
||||||
ticketId: ID ticket
|
|
||||||
state: Estado
|
|
||||||
customerId: ID cliente
|
customerId: ID cliente
|
||||||
salesPerson: Comercial
|
|
||||||
agency: Agencia
|
|
||||||
shipped: Enviado
|
|
||||||
warehouse: Almacén
|
|
||||||
customerCard: Ficha del cliente
|
customerCard: Ficha del cliente
|
||||||
alias: Alias
|
|
||||||
ticketList: Listado de tickets
|
ticketList: Listado de tickets
|
||||||
newOrder: Nuevo pedido
|
newOrder: Nuevo pedido
|
||||||
boxing:
|
boxing:
|
||||||
expedition: Expedición
|
expedition: Expedición
|
||||||
item: Artículo
|
|
||||||
created: Creado
|
created: Creado
|
||||||
worker: Trabajador
|
|
||||||
selectTime: 'Seleccionar hora:'
|
selectTime: 'Seleccionar hora:'
|
||||||
selectVideo: 'Seleccionar vídeo:'
|
selectVideo: 'Seleccionar vídeo:'
|
||||||
notFound: No hay vídeos disponibles
|
notFound: No hay vídeos disponibles
|
||||||
summary:
|
summary:
|
||||||
state: Estado
|
|
||||||
salesPerson: Comercial
|
|
||||||
agency: Agencia
|
|
||||||
zone: Zona
|
zone: Zona
|
||||||
warehouse: Almacén
|
|
||||||
collection: Colección
|
collection: Colección
|
||||||
route: Ruta
|
route: Ruta
|
||||||
invoice: Factura
|
invoice: Factura
|
||||||
shipped: Enviado
|
shipped: Enviado
|
||||||
landed: Entregado
|
|
||||||
consigneePhone: Tel. consignatario
|
consigneePhone: Tel. consignatario
|
||||||
consigneeMobile: Móv. consignatario
|
consigneeMobile: Móv. consignatario
|
||||||
consigneeAddress: Dir. consignatario
|
consigneeAddress: Dir. consignatario
|
||||||
clientPhone: Tel. cliente
|
clientPhone: Tel. cliente
|
||||||
clientMobile: Móv. cliente
|
clientMobile: Móv. cliente
|
||||||
consignee: Consignatario
|
consignee: Consignatario
|
||||||
subtotal: Subtotal
|
|
||||||
vat: IVA
|
|
||||||
total: Total
|
total: Total
|
||||||
saleLines: Líneas del pedido
|
saleLines: Líneas del pedido
|
||||||
item: Artículo
|
|
||||||
visible: Visible
|
|
||||||
available: Disponible
|
available: Disponible
|
||||||
quantity: Cantidad
|
|
||||||
price: Precio
|
|
||||||
discount: Descuento
|
discount: Descuento
|
||||||
packing: Encajado
|
packing: Encajado
|
||||||
hasComponentLack: Faltan componentes
|
hasComponentLack: Faltan componentes
|
||||||
itemShortage: No visible
|
itemShortage: No visible
|
||||||
claim: Reclamación
|
claim: Reclamación
|
||||||
reserved: Reservado
|
reserved: Reservado
|
||||||
created: Fecha creación
|
|
||||||
package: Embalaje
|
package: Embalaje
|
||||||
taxClass: Tipo IVA
|
taxClass: Tipo IVA
|
||||||
services: Servicios
|
services: Servicios
|
||||||
requester: Solicitante
|
requester: Solicitante
|
||||||
atender: Comprador
|
atender: Comprador
|
||||||
request: Petición de compra
|
request: Petición de compra
|
||||||
weight: Peso
|
|
||||||
goTo: Ir a
|
goTo: Ir a
|
||||||
summaryAmount: Resumen
|
summaryAmount: Resumen
|
||||||
purchaseRequest: Petición de compra
|
purchaseRequest: Petición de compra
|
||||||
service: Servicio
|
service: Servicio
|
||||||
description: Descripción
|
|
||||||
attender: Consignatario
|
attender: Consignatario
|
||||||
create:
|
create:
|
||||||
client: Cliente
|
|
||||||
address: Dirección
|
address: Dirección
|
||||||
landed: F. entrega
|
|
||||||
warehouse: Almacén
|
|
||||||
agency: Agencia
|
|
||||||
invoiceOut:
|
invoiceOut:
|
||||||
list:
|
|
||||||
ref: Referencia
|
|
||||||
issued: Fecha emisión
|
|
||||||
shortIssued: F. emisión
|
|
||||||
client: Cliente
|
|
||||||
created: Fecha creación
|
|
||||||
shortCreated: F. creación
|
|
||||||
company: Empresa
|
|
||||||
dued: Fecha vencimineto
|
|
||||||
shortDued: F. vencimiento
|
|
||||||
amount: Importe
|
|
||||||
card:
|
card:
|
||||||
issued: Fecha emisión
|
issued: Fecha emisión
|
||||||
client: Cliente
|
|
||||||
company: Empresa
|
|
||||||
customerCard: Ficha del cliente
|
customerCard: Ficha del cliente
|
||||||
ticketList: Listado de tickets
|
ticketList: Listado de tickets
|
||||||
summary:
|
summary:
|
||||||
issued: Fecha
|
issued: Fecha
|
||||||
created: Fecha creación
|
|
||||||
dued: Vencimiento
|
dued: Vencimiento
|
||||||
booked: Contabilizada
|
booked: Contabilizada
|
||||||
company: Empresa
|
|
||||||
taxBreakdown: Desglose impositivo
|
taxBreakdown: Desglose impositivo
|
||||||
type: Tipo
|
|
||||||
taxableBase: Base imp.
|
taxableBase: Base imp.
|
||||||
rate: Tarifa
|
rate: Tarifa
|
||||||
fee: Cuota
|
fee: Cuota
|
||||||
tickets: Tickets
|
tickets: Tickets
|
||||||
ticketId: Id ticket
|
|
||||||
nickname: Alias
|
|
||||||
shipped: F. envío
|
|
||||||
totalWithVat: Importe
|
totalWithVat: Importe
|
||||||
globalInvoices:
|
globalInvoices:
|
||||||
errors:
|
errors:
|
||||||
|
@ -627,20 +510,14 @@ invoiceOut:
|
||||||
noTicketsToInvoice: No existen tickets para facturar
|
noTicketsToInvoice: No existen tickets para facturar
|
||||||
criticalInvoiceError: Error crítico en la facturación proceso detenido
|
criticalInvoiceError: Error crítico en la facturación proceso detenido
|
||||||
table:
|
table:
|
||||||
client: Cliente
|
|
||||||
addressId: Id dirección
|
addressId: Id dirección
|
||||||
streetAddress: Dirección fiscal
|
streetAddress: Dirección fiscal
|
||||||
statusCard:
|
statusCard:
|
||||||
percentageText: '{getPercentage}% {getAddressNumber} de {getNAddresses}'
|
percentageText: '{getPercentage}% {getAddressNumber} de {getNAddresses}'
|
||||||
pdfsNumberText: '{nPdfs} de {totalPdfs} PDFs'
|
pdfsNumberText: '{nPdfs} de {totalPdfs} PDFs'
|
||||||
negativeBases:
|
negativeBases:
|
||||||
company: Empresa
|
|
||||||
country: País
|
|
||||||
clientId: Id cliente
|
clientId: Id cliente
|
||||||
client: Cliente
|
|
||||||
amount: Importe
|
|
||||||
base: Base
|
base: Base
|
||||||
ticketId: Id ticket
|
|
||||||
active: Activo
|
active: Activo
|
||||||
hasToInvoice: Facturar
|
hasToInvoice: Facturar
|
||||||
verifiedData: Datos comprobados
|
verifiedData: Datos comprobados
|
||||||
|
@ -650,43 +527,24 @@ invoiceOut:
|
||||||
order:
|
order:
|
||||||
field:
|
field:
|
||||||
salesPersonFk: Comercial
|
salesPersonFk: Comercial
|
||||||
clientFk: Cliente
|
|
||||||
isConfirmed: Confirmada
|
|
||||||
created: Creado
|
|
||||||
landed: F. entrega
|
|
||||||
hour: Hora
|
|
||||||
agency: Agencia
|
|
||||||
total: Total
|
|
||||||
form:
|
form:
|
||||||
clientFk: Cliente
|
clientFk: Cliente
|
||||||
addressFk: Dirección
|
addressFk: Dirección
|
||||||
landed: F. entrega
|
|
||||||
agencyModeFk: Agencia
|
agencyModeFk: Agencia
|
||||||
list:
|
list:
|
||||||
newOrder: Nuevo Pedido
|
newOrder: Nuevo Pedido
|
||||||
summary:
|
summary:
|
||||||
basket: Cesta
|
basket: Cesta
|
||||||
nickname: Alias
|
|
||||||
company: Empresa
|
|
||||||
confirmed: Confirmada
|
|
||||||
notConfirmed: No confirmada
|
notConfirmed: No confirmada
|
||||||
created: Creado
|
created: Creado
|
||||||
landed: F. entrega
|
|
||||||
phone: Teléfono
|
|
||||||
createdFrom: Creado desde
|
createdFrom: Creado desde
|
||||||
address: Dirección
|
address: Dirección
|
||||||
notes: Notas
|
|
||||||
subtotal: Subtotal
|
|
||||||
total: Total
|
total: Total
|
||||||
vat: IVA
|
vat: IVA
|
||||||
state: Estado
|
state: Estado
|
||||||
alias: Alias
|
alias: Alias
|
||||||
items: Artículos
|
items: Artículos
|
||||||
orderTicketList: Tickets del pedido
|
orderTicketList: Tickets del pedido
|
||||||
details: Detalles
|
|
||||||
item: Item
|
|
||||||
quantity: Cantidad
|
|
||||||
price: Precio
|
|
||||||
amount: Monto
|
amount: Monto
|
||||||
confirm: Confirmar
|
confirm: Confirmar
|
||||||
confirmLines: Confirmar lineas
|
confirmLines: Confirmar lineas
|
||||||
|
@ -696,15 +554,6 @@ shelving:
|
||||||
priority: Prioridad
|
priority: Prioridad
|
||||||
newShelving: Nuevo Carro
|
newShelving: Nuevo Carro
|
||||||
summary:
|
summary:
|
||||||
code: Código
|
|
||||||
parking: Parking
|
|
||||||
priority: Prioridad
|
|
||||||
worker: Trabajador
|
|
||||||
recyclable: Reciclable
|
|
||||||
basicData:
|
|
||||||
code: Código
|
|
||||||
parking: Parking
|
|
||||||
priority: Prioridad
|
|
||||||
recyclable: Reciclable
|
recyclable: Reciclable
|
||||||
parking:
|
parking:
|
||||||
pickingOrder: Orden de recogida
|
pickingOrder: Orden de recogida
|
||||||
|
@ -714,15 +563,8 @@ parking:
|
||||||
info: Puedes buscar por código de parking
|
info: Puedes buscar por código de parking
|
||||||
label: Buscar parking...
|
label: Buscar parking...
|
||||||
department:
|
department:
|
||||||
pageTitles:
|
|
||||||
basicData: Basic data
|
|
||||||
department: Departamentos
|
|
||||||
summary: Resumen
|
|
||||||
name: Nombre
|
|
||||||
code: Código
|
|
||||||
chat: Chat
|
chat: Chat
|
||||||
bossDepartment: Jefe de departamento
|
bossDepartment: Jefe de departamento
|
||||||
email: Email
|
|
||||||
selfConsumptionCustomer: Cliente autoconsumo
|
selfConsumptionCustomer: Cliente autoconsumo
|
||||||
telework: Teletrabaja
|
telework: Teletrabaja
|
||||||
notifyOnErrors: Notificar errores
|
notifyOnErrors: Notificar errores
|
||||||
|
@ -731,48 +573,11 @@ department:
|
||||||
hasToSendMail: Enviar fichadas por mail
|
hasToSendMail: Enviar fichadas por mail
|
||||||
departmentRemoved: Departamento eliminado
|
departmentRemoved: Departamento eliminado
|
||||||
worker:
|
worker:
|
||||||
pageTitles:
|
|
||||||
workers: Trabajadores
|
|
||||||
list: Listado
|
|
||||||
basicData: Datos básicos
|
|
||||||
summary: Resumen
|
|
||||||
notifications: Notificaciones
|
|
||||||
workerCreate: Nuevo trabajador
|
|
||||||
department: Departamentos
|
|
||||||
pda: PDA
|
|
||||||
notes: Notas
|
|
||||||
dms: Mi documentación
|
|
||||||
pbx: Centralita
|
|
||||||
log: Historial
|
|
||||||
calendar: Calendario
|
|
||||||
timeControl: Control de horario
|
|
||||||
locker: Taquilla
|
|
||||||
balance: Balance
|
|
||||||
formation: Formación
|
|
||||||
medical: Mutua
|
|
||||||
operator: Operario
|
|
||||||
list:
|
list:
|
||||||
name: Nombre
|
|
||||||
email: Email
|
|
||||||
phone: Teléfono
|
|
||||||
mobile: Móvil
|
|
||||||
active: Activo
|
|
||||||
department: Departamento
|
department: Departamento
|
||||||
schedule: Horario
|
schedule: Horario
|
||||||
newWorker: Nuevo trabajador
|
newWorker: Nuevo trabajador
|
||||||
card:
|
|
||||||
workerId: ID Trabajador
|
|
||||||
user: Usuario
|
|
||||||
name: Nombre
|
|
||||||
email: Correo personal
|
|
||||||
phone: Teléfono
|
|
||||||
mobile: Móvil
|
|
||||||
active: Activo
|
|
||||||
warehouse: Almacén
|
|
||||||
agency: Empresa
|
|
||||||
salesPerson: Comercial
|
|
||||||
summary:
|
summary:
|
||||||
basicData: Datos básicos
|
|
||||||
boss: Jefe
|
boss: Jefe
|
||||||
phoneExtension: Extensión de teléfono
|
phoneExtension: Extensión de teléfono
|
||||||
entPhone: Teléfono de empresa
|
entPhone: Teléfono de empresa
|
||||||
|
@ -795,19 +600,12 @@ worker:
|
||||||
serialNumber: Número de serie
|
serialNumber: Número de serie
|
||||||
removePDA: Desasignar PDA
|
removePDA: Desasignar PDA
|
||||||
create:
|
create:
|
||||||
name: Nombre
|
|
||||||
lastName: Apellido
|
lastName: Apellido
|
||||||
birth: Fecha de nacimiento
|
birth: Fecha de nacimiento
|
||||||
fi: DNI/NIF/NIE
|
fi: DNI/NIF/NIE
|
||||||
code: Código de trabajador
|
code: Código de trabajador
|
||||||
phone: Teléfono
|
|
||||||
postcode: Código postal
|
|
||||||
province: Provincia
|
|
||||||
city: Población
|
|
||||||
street: Dirección
|
|
||||||
webUser: Usuario Web
|
webUser: Usuario Web
|
||||||
personalEmail: Correo personal
|
personalEmail: Correo personal
|
||||||
company: Empresa
|
|
||||||
boss: Jefe
|
boss: Jefe
|
||||||
payMethods: Método de pago
|
payMethods: Método de pago
|
||||||
iban: IBAN
|
iban: IBAN
|
||||||
|
@ -819,16 +617,13 @@ worker:
|
||||||
endDate: Fecha Fin
|
endDate: Fecha Fin
|
||||||
center: Centro Formación
|
center: Centro Formación
|
||||||
invoice: Factura
|
invoice: Factura
|
||||||
amount: Importe
|
|
||||||
remark: Bonficado
|
remark: Bonficado
|
||||||
hasDiploma: Diploma
|
hasDiploma: Diploma
|
||||||
medical:
|
medical:
|
||||||
tableVisibleColumns:
|
tableVisibleColumns:
|
||||||
date: Fecha
|
|
||||||
time: Hora
|
time: Hora
|
||||||
center: Centro de Formación
|
center: Centro de Formación
|
||||||
invoice: Factura
|
invoice: Factura
|
||||||
amount: Importe
|
|
||||||
isFit: Apto
|
isFit: Apto
|
||||||
remark: Observaciones
|
remark: Observaciones
|
||||||
imageNotFound: No se ha encontrado la imagen
|
imageNotFound: No se ha encontrado la imagen
|
||||||
|
@ -853,18 +648,7 @@ worker:
|
||||||
machine: Máquina
|
machine: Máquina
|
||||||
|
|
||||||
wagon:
|
wagon:
|
||||||
pageTitles:
|
|
||||||
wagons: Vagones
|
|
||||||
wagonsList: Listado vagones
|
|
||||||
wagonCreate: Crear tipo
|
|
||||||
wagonEdit: Editar tipo
|
|
||||||
typesList: Listado tipos
|
|
||||||
typeCreate: Crear tipo
|
|
||||||
typeEdit: Editar tipo
|
|
||||||
wagonCounter: Contador de carros
|
|
||||||
wagonTray: Listado bandejas
|
|
||||||
type:
|
type:
|
||||||
name: Nombre
|
|
||||||
submit: Guardar
|
submit: Guardar
|
||||||
reset: Deshacer cambios
|
reset: Deshacer cambios
|
||||||
trayColor: Color de la bandeja
|
trayColor: Color de la bandeja
|
||||||
|
@ -872,13 +656,9 @@ wagon:
|
||||||
list:
|
list:
|
||||||
plate: Matrícula
|
plate: Matrícula
|
||||||
volume: Volumen
|
volume: Volumen
|
||||||
type: Tipo
|
|
||||||
remove: Borrar
|
remove: Borrar
|
||||||
removeItem: Vagón borrado correctamente
|
removeItem: Vagón borrado correctamente
|
||||||
create:
|
create:
|
||||||
plate: Matrícula
|
|
||||||
volume: Volumen
|
|
||||||
type: Tipo
|
|
||||||
label: Etiqueta
|
label: Etiqueta
|
||||||
warnings:
|
warnings:
|
||||||
noData: Sin datos disponibles
|
noData: Sin datos disponibles
|
||||||
|
@ -894,26 +674,16 @@ wagon:
|
||||||
supplier:
|
supplier:
|
||||||
list:
|
list:
|
||||||
payMethod: Método de pago
|
payMethod: Método de pago
|
||||||
payDeadline: Plazo de pago
|
|
||||||
payDay: Día de pago
|
|
||||||
account: Cuenta
|
account: Cuenta
|
||||||
newSupplier: Nuevo proveedor
|
newSupplier: Nuevo proveedor
|
||||||
tableVisibleColumns:
|
tableVisibleColumns:
|
||||||
id: Id
|
|
||||||
name: Nombre
|
|
||||||
nif: NIF/CIF
|
nif: NIF/CIF
|
||||||
nickname: Alias
|
|
||||||
account: Cuenta
|
account: Cuenta
|
||||||
payMethod: Método de pago
|
|
||||||
payDay: Dia de pago
|
|
||||||
country: País
|
|
||||||
summary:
|
summary:
|
||||||
responsible: Responsable
|
responsible: Responsable
|
||||||
notes: Notas
|
|
||||||
verified: Verificado
|
verified: Verificado
|
||||||
isActive: Está activo
|
isActive: Está activo
|
||||||
billingData: Forma de pago
|
billingData: Forma de pago
|
||||||
payMethod: Método de pago
|
|
||||||
payDeadline: Plazo de pago
|
payDeadline: Plazo de pago
|
||||||
payDay: Día de pago
|
payDay: Día de pago
|
||||||
account: Cuenta
|
account: Cuenta
|
||||||
|
@ -926,20 +696,17 @@ supplier:
|
||||||
fiscalAddress: Dirección fiscal
|
fiscalAddress: Dirección fiscal
|
||||||
socialName: Razón social
|
socialName: Razón social
|
||||||
taxNumber: NIF/CIF
|
taxNumber: NIF/CIF
|
||||||
street: Dirección
|
|
||||||
city: Población
|
city: Población
|
||||||
postCode: Código postal
|
|
||||||
province: Provincia
|
province: Provincia
|
||||||
country: País
|
|
||||||
create:
|
create:
|
||||||
supplierName: Nombre del proveedor
|
supplierName: Nombre del proveedor
|
||||||
basicData:
|
basicData:
|
||||||
alias: Alias
|
|
||||||
workerFk: Responsable
|
workerFk: Responsable
|
||||||
isSerious: Verificado
|
isSerious: Verificado
|
||||||
isActive: Activo
|
isActive: Activo
|
||||||
isPayMethodChecked: Método de pago validado
|
isPayMethodChecked: Método de pago validado
|
||||||
note: Notas
|
note: Notas
|
||||||
|
size: Tamaño
|
||||||
fiscalData:
|
fiscalData:
|
||||||
name: Razón social *
|
name: Razón social *
|
||||||
nif: NIF/CIF *
|
nif: NIF/CIF *
|
||||||
|
@ -948,36 +715,17 @@ supplier:
|
||||||
sageWithholdingFk: Retención sage
|
sageWithholdingFk: Retención sage
|
||||||
sageTransactionTypeFk: Tipo de transacción sage
|
sageTransactionTypeFk: Tipo de transacción sage
|
||||||
supplierActivityFk: Actividad proveedor
|
supplierActivityFk: Actividad proveedor
|
||||||
healthRegister: Pasaporte sanitario
|
|
||||||
street: Calle
|
|
||||||
postcode: Código postal
|
|
||||||
city: Población *
|
|
||||||
provinceFk: Provincia
|
|
||||||
country: País
|
|
||||||
isTrucker: Transportista
|
isTrucker: Transportista
|
||||||
isVies: Vies
|
isVies: Vies
|
||||||
billingData:
|
billingData:
|
||||||
payMethodFk: Forma de pago
|
payMethodFk: Forma de pago
|
||||||
payDemFk: Plazo de pago
|
payDemFk: Plazo de pago
|
||||||
payDay: Día de pago
|
|
||||||
accounts:
|
accounts:
|
||||||
iban: Iban
|
iban: Iban
|
||||||
bankEntity: Entidad bancaria
|
bankEntity: Entidad bancaria
|
||||||
beneficiary: Beneficiario
|
beneficiary: Beneficiario
|
||||||
contacts:
|
contacts:
|
||||||
name: Nombre
|
|
||||||
phone: Teléfono
|
|
||||||
mobile: Móvil
|
|
||||||
email: Email
|
|
||||||
observation: Notas
|
observation: Notas
|
||||||
addresses:
|
|
||||||
street: Dirección
|
|
||||||
postcode: Código postal
|
|
||||||
phone: Teléfono
|
|
||||||
name: Nombre
|
|
||||||
city: Población
|
|
||||||
province: Provincia
|
|
||||||
mobile: Móvil
|
|
||||||
agencyTerms:
|
agencyTerms:
|
||||||
agencyFk: Agencia
|
agencyFk: Agencia
|
||||||
minimumM3: M3 mínimos
|
minimumM3: M3 mínimos
|
||||||
|
@ -989,25 +737,16 @@ supplier:
|
||||||
addRow: Añadir fila
|
addRow: Añadir fila
|
||||||
consumption:
|
consumption:
|
||||||
entry: Entrada
|
entry: Entrada
|
||||||
date: Fecha
|
|
||||||
reference: Referencia
|
|
||||||
travel:
|
travel:
|
||||||
travelList:
|
travelList:
|
||||||
tableVisibleColumns:
|
tableVisibleColumns:
|
||||||
id: Id
|
|
||||||
ref: Referencia
|
ref: Referencia
|
||||||
agency: Agencia
|
|
||||||
shipped: F.envío
|
|
||||||
shipHour: Hora de envío
|
shipHour: Hora de envío
|
||||||
landHour: Hora de llegada
|
landHour: Hora de llegada
|
||||||
landed: F.entrega
|
|
||||||
warehouseIn: Alm.salida
|
|
||||||
warehouseOut: Alm.entrada
|
|
||||||
totalEntries: ∑
|
totalEntries: ∑
|
||||||
totalEntriesTooltip: Entradas totales
|
totalEntriesTooltip: Entradas totales
|
||||||
daysOnward: Días de llegada en adelante
|
daysOnward: Días de llegada en adelante
|
||||||
summary:
|
summary:
|
||||||
confirmed: Confirmado
|
|
||||||
entryId: Id entrada
|
entryId: Id entrada
|
||||||
freight: Porte
|
freight: Porte
|
||||||
package: Embalaje
|
package: Embalaje
|
||||||
|
@ -1020,62 +759,88 @@ travel:
|
||||||
AddEntry: Añadir entrada
|
AddEntry: Añadir entrada
|
||||||
thermographs: Termógrafos
|
thermographs: Termógrafos
|
||||||
hb: HB
|
hb: HB
|
||||||
variables:
|
|
||||||
search: Id/Referencia
|
|
||||||
agencyModeFk: Agencia
|
|
||||||
warehouseInFk: Alm. entrada
|
|
||||||
warehouseOutFk: ' Alm. salida'
|
|
||||||
landedFrom: Llegada desde
|
|
||||||
landedTo: Llegada hasta
|
|
||||||
continent: Cont. Salida
|
|
||||||
totalEntries: Ent. totales
|
|
||||||
basicData:
|
basicData:
|
||||||
reference: Referencia
|
|
||||||
agency: Agencia
|
|
||||||
shipped: F. Envío
|
|
||||||
landed: F. entrega
|
|
||||||
warehouseOut: Alm. salida
|
|
||||||
warehouseIn: Alm. entrada
|
|
||||||
delivered: Enviada
|
|
||||||
received: Recibida
|
|
||||||
daysInForward: Días redada
|
daysInForward: Días redada
|
||||||
thermographs:
|
thermographs:
|
||||||
code: Código
|
|
||||||
temperature: Temperatura
|
temperature: Temperatura
|
||||||
state: Estado
|
|
||||||
destination: Destino
|
destination: Destino
|
||||||
created: Fecha creación
|
|
||||||
thermograph: Termógrafo
|
thermograph: Termógrafo
|
||||||
reference: Referencia
|
|
||||||
type: Tipo
|
|
||||||
company: Empresa
|
|
||||||
warehouse: Almacén
|
|
||||||
travelFileDescription: 'Id envío { travelId }'
|
travelFileDescription: 'Id envío { travelId }'
|
||||||
file: Fichero
|
item:
|
||||||
|
descriptor:
|
||||||
|
buyer: Comprador
|
||||||
|
color: Color
|
||||||
|
category: Categoría
|
||||||
|
available: Disponible
|
||||||
|
warehouseText: 'Calculado sobre el almacén de { warehouseName }'
|
||||||
|
itemDiary: Registro de compra-venta
|
||||||
|
list:
|
||||||
|
id: Identificador
|
||||||
|
stems: Tallos
|
||||||
|
category: Reino
|
||||||
|
typeName: Tipo
|
||||||
|
isActive: Activo
|
||||||
|
weightByPiece: Peso (gramos)/tallo
|
||||||
|
userName: Comprador
|
||||||
|
stemMultiplier: Multiplicador
|
||||||
|
fixedPrice:
|
||||||
|
itemFk: ID Artículo
|
||||||
|
groupingPrice: Precio grouping
|
||||||
|
packingPrice: Precio packing
|
||||||
|
hasMinPrice: Tiene precio mínimo
|
||||||
|
minPrice: Precio min
|
||||||
|
started: Inicio
|
||||||
|
ended: Fin
|
||||||
|
create:
|
||||||
|
priority: Prioridad
|
||||||
|
summary:
|
||||||
|
otherData: Otros datos
|
||||||
|
tax: IVA
|
||||||
|
botanical: Botánico
|
||||||
|
barcode: Código de barras
|
||||||
|
completeName: Nombre completo
|
||||||
|
family: Familia
|
||||||
|
stems: Tallos
|
||||||
|
multiplier: Multiplicador
|
||||||
|
buyer: Comprador
|
||||||
|
doPhoto: Hacer foto
|
||||||
|
intrastatCode: Código intrastat
|
||||||
|
ref: Referencia
|
||||||
|
relevance: Relevancia
|
||||||
|
weight: Peso (gramos)/tallo
|
||||||
|
units: Unidades/caja
|
||||||
|
expense: Gasto
|
||||||
|
generic: Genérico
|
||||||
|
recycledPlastic: Plástico reciclado
|
||||||
|
nonRecycledPlastic: Plástico no reciclado
|
||||||
|
minSalesQuantity: Cantidad mínima de venta
|
||||||
|
genus: Genus
|
||||||
|
specie: Specie
|
||||||
|
buyRequest:
|
||||||
|
requester: Solicitante
|
||||||
|
requested: Solicitado
|
||||||
|
attender: Comprador
|
||||||
|
achieved: Conseguido
|
||||||
|
concept: Concepto
|
||||||
components:
|
components:
|
||||||
topbar: {}
|
topbar: {}
|
||||||
itemsFilterPanel:
|
itemsFilterPanel:
|
||||||
typeFk: Tipo
|
typeFk: Tipo
|
||||||
tag: Etiqueta
|
|
||||||
value: Valor
|
value: Valor
|
||||||
# ItemFixedPriceFilter
|
# ItemFixedPriceFilter
|
||||||
buyerFk: Comprador
|
buyerFk: Comprador
|
||||||
warehouseFk: Almacén
|
|
||||||
started: Desde
|
started: Desde
|
||||||
ended: Hasta
|
ended: Hasta
|
||||||
mine: Para mi
|
mine: Para mi
|
||||||
hasMinPrice: Precio mínimo
|
hasMinPrice: Precio mínimo
|
||||||
# LatestBuysFilter
|
# LatestBuysFilter
|
||||||
salesPersonFk: Comprador
|
salesPersonFk: Comprador
|
||||||
supplierFk: Proveedor
|
|
||||||
active: Activo
|
active: Activo
|
||||||
visible: Visible
|
|
||||||
floramondo: Floramondo
|
floramondo: Floramondo
|
||||||
showBadDates: Ver items a futuro
|
showBadDates: Ver items a futuro
|
||||||
userPanel:
|
userPanel:
|
||||||
copyToken: Token copiado al portapapeles
|
copyToken: Token copiado al portapapeles
|
||||||
settings: Configuración
|
settings: Configuración
|
||||||
logOut: Cerrar sesión
|
|
||||||
localWarehouse: Almacén local
|
localWarehouse: Almacén local
|
||||||
localBank: Banco local
|
localBank: Banco local
|
||||||
localCompany: Empresa local
|
localCompany: Empresa local
|
||||||
|
@ -1083,7 +848,6 @@ components:
|
||||||
userCompany: Empresa del usuario
|
userCompany: Empresa del usuario
|
||||||
smartCard:
|
smartCard:
|
||||||
downloadFile: Descargar archivo
|
downloadFile: Descargar archivo
|
||||||
clone: Clonar
|
|
||||||
openCard: Ficha
|
openCard: Ficha
|
||||||
openSummary: Detalles
|
openSummary: Detalles
|
||||||
viewSummary: Vista previa
|
viewSummary: Vista previa
|
||||||
|
|
|
@ -37,7 +37,7 @@ const redirectToAccountBasicData = (_, { id }) => {
|
||||||
<div class="column q-gutter-sm">
|
<div class="column q-gutter-sm">
|
||||||
<VnInput
|
<VnInput
|
||||||
v-model="data.name"
|
v-model="data.name"
|
||||||
:label="t('account.create.name')"
|
:label="t('globals.name')"
|
||||||
:rules="validate('VnUser.name')"
|
:rules="validate('VnUser.name')"
|
||||||
/>
|
/>
|
||||||
<VnInput
|
<VnInput
|
||||||
|
@ -47,12 +47,12 @@ const redirectToAccountBasicData = (_, { id }) => {
|
||||||
/>
|
/>
|
||||||
<VnInput
|
<VnInput
|
||||||
v-model="data.email"
|
v-model="data.email"
|
||||||
:label="t('account.create.email')"
|
:label="t('globals.params.email')"
|
||||||
type="email"
|
type="email"
|
||||||
:rules="validate('VnUser.email')"
|
:rules="validate('VnUser.email')"
|
||||||
/>
|
/>
|
||||||
<VnSelect
|
<VnSelect
|
||||||
:label="t('account.create.role')"
|
:label="t('account.card.role')"
|
||||||
v-model="data.roleFk"
|
v-model="data.roleFk"
|
||||||
:options="rolesOptions"
|
:options="rolesOptions"
|
||||||
option-value="id"
|
option-value="id"
|
||||||
|
@ -63,7 +63,7 @@ const redirectToAccountBasicData = (_, { id }) => {
|
||||||
/>
|
/>
|
||||||
<VnInput
|
<VnInput
|
||||||
v-model="data.password"
|
v-model="data.password"
|
||||||
:label="t('account.create.password')"
|
:label="t('ldap.password')"
|
||||||
type="password"
|
type="password"
|
||||||
:rules="validate('VnUser.password')"
|
:rules="validate('VnUser.password')"
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -45,7 +45,7 @@ const rolesOptions = ref([]);
|
||||||
<QItem class="q-my-sm">
|
<QItem class="q-my-sm">
|
||||||
<QItemSection>
|
<QItemSection>
|
||||||
<VnInput
|
<VnInput
|
||||||
:label="t('account.card.name')"
|
:label="t('globals.name')"
|
||||||
v-model="params.name"
|
v-model="params.name"
|
||||||
lazy-rules
|
lazy-rules
|
||||||
is-outlined
|
is-outlined
|
||||||
|
|
|
@ -102,11 +102,11 @@ onMounted(async () => await getInitialLdapConfig());
|
||||||
<QBtn
|
<QBtn
|
||||||
class="q-ml-none"
|
class="q-ml-none"
|
||||||
color="primary"
|
color="primary"
|
||||||
:label="t('ldap.testConnection')"
|
:label="t('account.card.testConnection')"
|
||||||
@click="onTestConection()"
|
@click="onTestConection()"
|
||||||
>
|
>
|
||||||
<QTooltip>
|
<QTooltip>
|
||||||
{{ t('ldap.testConnection') }}
|
{{ t('account.card.testConnection') }}
|
||||||
</QTooltip>
|
</QTooltip>
|
||||||
</QBtn>
|
</QBtn>
|
||||||
</template>
|
</template>
|
||||||
|
@ -114,7 +114,7 @@ onMounted(async () => await getInitialLdapConfig());
|
||||||
<VnRow class="row q-gutter-md">
|
<VnRow class="row q-gutter-md">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<QCheckbox
|
<QCheckbox
|
||||||
:label="t('ldap.enableSync')"
|
:label="t('account.card.enableSync')"
|
||||||
v-model="data.hasData"
|
v-model="data.hasData"
|
||||||
@update:model-value="($event) => (hasData = $event)"
|
@update:model-value="($event) => (hasData = $event)"
|
||||||
:toggle-indeterminate="false"
|
:toggle-indeterminate="false"
|
||||||
|
@ -146,7 +146,7 @@ onMounted(async () => await getInitialLdapConfig());
|
||||||
/>
|
/>
|
||||||
<VnInput :label="t('ldap.userDN')" clearable v-model="data.userDn" />
|
<VnInput :label="t('ldap.userDN')" clearable v-model="data.userDn" />
|
||||||
<VnInput
|
<VnInput
|
||||||
:label="t('ldap.groupDN')"
|
:label="t('account.card.groupDN')"
|
||||||
clearable
|
clearable
|
||||||
v-model="data.groupDn"
|
v-model="data.groupDn"
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -110,12 +110,12 @@ onMounted(async () => await getInitialSambaConfig());
|
||||||
<QBtn
|
<QBtn
|
||||||
class="q-ml-none"
|
class="q-ml-none"
|
||||||
color="primary"
|
color="primary"
|
||||||
:label="t('samba.testConnection')"
|
:label="t('account.card.testConnection')"
|
||||||
:disable="formModel.hasChanges"
|
:disable="formModel.hasChanges"
|
||||||
@click="onTestConection()"
|
@click="onTestConection()"
|
||||||
>
|
>
|
||||||
<QTooltip>
|
<QTooltip>
|
||||||
{{ t('samba.testConnection') }}
|
{{ t('account.card.testConnection') }}
|
||||||
</QTooltip>
|
</QTooltip>
|
||||||
</QBtn>
|
</QBtn>
|
||||||
</template>
|
</template>
|
||||||
|
@ -123,7 +123,7 @@ onMounted(async () => await getInitialSambaConfig());
|
||||||
<VnRow class="row q-gutter-md">
|
<VnRow class="row q-gutter-md">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<QCheckbox
|
<QCheckbox
|
||||||
:label="t('samba.enableSync')"
|
:label="t('account.card.enableSync')"
|
||||||
v-model="data.hasData"
|
v-model="data.hasData"
|
||||||
@update:model-value="($event) => (hasData = $event)"
|
@update:model-value="($event) => (hasData = $event)"
|
||||||
:toggle-indeterminate="false"
|
:toggle-indeterminate="false"
|
||||||
|
|
|
@ -36,15 +36,12 @@ const onDataSaved = ({ id }) => {
|
||||||
<template #form-inputs="{ data }">
|
<template #form-inputs="{ data }">
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<VnInput v-model="data.alias" :label="t('mailAlias.name')" />
|
<VnInput v-model="data.alias" :label="t('globals.name')" />
|
||||||
</div>
|
</div>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<VnInput
|
<VnInput v-model="data.description" :label="t('role.description')" />
|
||||||
v-model="data.description"
|
|
||||||
:label="t('mailAlias.description')"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -11,8 +11,8 @@ const { t } = useI18n();
|
||||||
<FormModel model="Alias">
|
<FormModel model="Alias">
|
||||||
<template #form="{ data }">
|
<template #form="{ data }">
|
||||||
<div class="column q-gutter-y-md">
|
<div class="column q-gutter-y-md">
|
||||||
<VnInput v-model="data.alias" :label="t('mailAlias.name')" />
|
<VnInput v-model="data.alias" :label="t('globals.name')" />
|
||||||
<VnInput v-model="data.description" :label="t('mailAlias.description')" />
|
<VnInput v-model="data.description" :label="t('role.description')" />
|
||||||
<QCheckbox :label="t('mailAlias.isPublic')" v-model="data.isPublic" />
|
<QCheckbox :label="t('mailAlias.isPublic')" v-model="data.isPublic" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -71,7 +71,7 @@ const removeAlias = () => {
|
||||||
</QItem>
|
</QItem>
|
||||||
</template>
|
</template>
|
||||||
<template #body="{ entity }">
|
<template #body="{ entity }">
|
||||||
<VnLv :label="t('mailAlias.description')" :value="entity.description" />
|
<VnLv :label="t('role.description')" :value="entity.description" />
|
||||||
</template>
|
</template>
|
||||||
</CardDescriptor>
|
</CardDescriptor>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -42,8 +42,8 @@ const entityId = computed(() => $props.id || route.params.id);
|
||||||
<QIcon name="open_in_new" />
|
<QIcon name="open_in_new" />
|
||||||
</router-link>
|
</router-link>
|
||||||
</QCardSection>
|
</QCardSection>
|
||||||
<VnLv :label="t('mailAlias.id')" :value="alias.id" />
|
<VnLv :label="t('role.id')" :value="alias.id" />
|
||||||
<VnLv :label="t('mailAlias.description')" :value="alias.description" />
|
<VnLv :label="t('role.description')" :value="alias.description" />
|
||||||
</QCard>
|
</QCard>
|
||||||
</template>
|
</template>
|
||||||
</CardSummary>
|
</CardSummary>
|
||||||
|
|
|
@ -36,7 +36,7 @@ watch(
|
||||||
<div class="q-gutter-y-sm">
|
<div class="q-gutter-y-sm">
|
||||||
<VnInput v-model="data.name" :label="t('account.card.nickname')" />
|
<VnInput v-model="data.name" :label="t('account.card.nickname')" />
|
||||||
<VnInput v-model="data.nickname" :label="t('account.card.alias')" />
|
<VnInput v-model="data.nickname" :label="t('account.card.alias')" />
|
||||||
<VnInput v-model="data.email" :label="t('account.card.email')" />
|
<VnInput v-model="data.email" :label="t('globals.params.email')" />
|
||||||
<VnSelect
|
<VnSelect
|
||||||
url="Languages"
|
url="Languages"
|
||||||
v-model="data.lang"
|
v-model="data.lang"
|
||||||
|
|
|
@ -54,7 +54,7 @@ const hasAccount = ref(false);
|
||||||
</template>
|
</template>
|
||||||
<template #before>
|
<template #before>
|
||||||
<!-- falla id :id="entityId.value" collection="user" size="160x160" -->
|
<!-- falla id :id="entityId.value" collection="user" size="160x160" -->
|
||||||
<VnImg :id="entityId" collection="user" resolution="160x160" class="photo">
|
<VnImg :id="entityId" collection="user" resolution="520x520" class="photo">
|
||||||
<template #error>
|
<template #error>
|
||||||
<div
|
<div
|
||||||
class="absolute-full picture text-center q-pa-md flex flex-center"
|
class="absolute-full picture text-center q-pa-md flex flex-center"
|
||||||
|
|
|
@ -29,7 +29,7 @@ const props = defineProps({
|
||||||
<QItem class="q-my-sm">
|
<QItem class="q-my-sm">
|
||||||
<QItemSection>
|
<QItemSection>
|
||||||
<VnInput
|
<VnInput
|
||||||
:label="t('role.name')"
|
:label="t('globals.name')"
|
||||||
v-model="params.name"
|
v-model="params.name"
|
||||||
lazy-rules
|
lazy-rules
|
||||||
is-outlined
|
is-outlined
|
||||||
|
|
|
@ -12,15 +12,12 @@ const { t } = useI18n();
|
||||||
<template #form="{ data }">
|
<template #form="{ data }">
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<VnInput v-model="data.name" :label="t('role.card.name')" />
|
<VnInput v-model="data.name" :label="t('globals.name')" />
|
||||||
</div>
|
</div>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<VnInput
|
<VnInput v-model="data.description" :label="t('role.description')" />
|
||||||
v-model="data.description"
|
|
||||||
:label="t('role.card.description')"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -58,7 +58,7 @@ const removeRole = async () => {
|
||||||
</QItem>
|
</QItem>
|
||||||
</template>
|
</template>
|
||||||
<template #body="{ entity }">
|
<template #body="{ entity }">
|
||||||
<VnLv :label="t('role.card.description')" :value="entity.description" />
|
<VnLv :label="t('role.description')" :value="entity.description" />
|
||||||
</template>
|
</template>
|
||||||
</CardDescriptor>
|
</CardDescriptor>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -22,15 +22,12 @@ const { t } = useI18n();
|
||||||
<template #form-inputs="{ data }">
|
<template #form-inputs="{ data }">
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<VnInput v-model="data.name" :label="t('role.card.name')" />
|
<VnInput v-model="data.name" :label="t('globals.name')" />
|
||||||
</div>
|
</div>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<VnInput
|
<VnInput v-model="data.description" :label="t('role.description')" />
|
||||||
v-model="data.description"
|
|
||||||
:label="t('role.card.description')"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -44,9 +44,9 @@ const filter = {
|
||||||
<QIcon name="open_in_new" />
|
<QIcon name="open_in_new" />
|
||||||
</a>
|
</a>
|
||||||
</QCardSection>
|
</QCardSection>
|
||||||
<VnLv :label="t('role.card.id')" :value="role.id" />
|
<VnLv :label="t('role.id')" :value="role.id" />
|
||||||
<VnLv :label="t('role.card.name')" :value="role.name" />
|
<VnLv :label="t('globals.name')" :value="role.name" />
|
||||||
<VnLv :label="t('role.card.description')" :value="role.description" />
|
<VnLv :label="t('role.description')" :value="role.description" />
|
||||||
</QCard>
|
</QCard>
|
||||||
</template>
|
</template>
|
||||||
</CardSummary>
|
</CardSummary>
|
||||||
|
|
|
@ -1,32 +1,15 @@
|
||||||
account:
|
account:
|
||||||
pageTitles:
|
|
||||||
users: Users
|
|
||||||
list: Users
|
|
||||||
roles: Roles
|
|
||||||
alias: Mail aliasses
|
|
||||||
accounts: Accounts
|
|
||||||
ldap: LDAP
|
|
||||||
samba: Samba
|
|
||||||
acls: ACLs
|
|
||||||
connections: Connections
|
|
||||||
inheritedRoles: Inherited Roles
|
|
||||||
subRoles: Sub Roles
|
|
||||||
newRole: New role
|
|
||||||
privileges: Privileges
|
|
||||||
mailAlias: Mail Alias
|
|
||||||
mailForwarding: Mail Forwarding
|
|
||||||
accountCreate: New user
|
|
||||||
aliasUsers: Users
|
|
||||||
card:
|
card:
|
||||||
name: Name
|
|
||||||
nickname: User
|
nickname: User
|
||||||
role: Role
|
role: Role
|
||||||
email: Email
|
|
||||||
alias: Alias
|
alias: Alias
|
||||||
lang: Language
|
lang: Language
|
||||||
roleFk: Role
|
roleFk: Role
|
||||||
newUser: New user
|
newUser: New user
|
||||||
ticketTracking: Ticket tracking
|
ticketTracking: Ticket tracking
|
||||||
|
enableSync: Habilitar sincronización
|
||||||
|
groupDN: DN grupos
|
||||||
|
testConnection: Probar conexión
|
||||||
privileges:
|
privileges:
|
||||||
delegate: Can delegate privileges
|
delegate: Can delegate privileges
|
||||||
enabled: Account enabled!
|
enabled: Account enabled!
|
||||||
|
@ -74,11 +57,7 @@ account:
|
||||||
search: Search user
|
search: Search user
|
||||||
searchInfo: You can search by id, name or nickname
|
searchInfo: You can search by id, name or nickname
|
||||||
create:
|
create:
|
||||||
name: Name
|
|
||||||
nickname: Nickname
|
nickname: Nickname
|
||||||
email: Email
|
|
||||||
role: Role
|
|
||||||
password: Password
|
|
||||||
active: Active
|
active: Active
|
||||||
mailForwarding:
|
mailForwarding:
|
||||||
forwardingMail: Forward email
|
forwardingMail: Forward email
|
||||||
|
@ -86,50 +65,30 @@ account:
|
||||||
enableMailForwarding: Enable mail forwarding
|
enableMailForwarding: Enable mail forwarding
|
||||||
mailInputInfo: All emails will be forwarded to the specified address.
|
mailInputInfo: All emails will be forwarded to the specified address.
|
||||||
role:
|
role:
|
||||||
pageTitles:
|
|
||||||
inheritedRoles: Inherited Roles
|
|
||||||
subRoles: Sub Roles
|
|
||||||
card:
|
|
||||||
description: Description
|
|
||||||
id: Id
|
|
||||||
name: Name
|
|
||||||
newRole: New role
|
newRole: New role
|
||||||
searchRoles: Search role
|
searchRoles: Search role
|
||||||
searchInfo: Search role by id or name
|
searchInfo: Search role by id or name
|
||||||
name: Name
|
|
||||||
description: Description
|
description: Description
|
||||||
id: Id
|
id: Id
|
||||||
mailAlias:
|
mailAlias:
|
||||||
pageTitles:
|
|
||||||
aliasUsers: Users
|
|
||||||
search: Search mail alias
|
search: Search mail alias
|
||||||
searchInfo: Search alias by id or name
|
searchInfo: Search alias by id or name
|
||||||
alias: Alias
|
|
||||||
description: Description
|
|
||||||
id: Id
|
|
||||||
newAlias: New alias
|
newAlias: New alias
|
||||||
name: Name
|
|
||||||
isPublic: Public
|
isPublic: Public
|
||||||
ldap:
|
ldap:
|
||||||
enableSync: Enable synchronization
|
|
||||||
server: Server
|
server: Server
|
||||||
rdn: RDN
|
rdn: RDN
|
||||||
userDN: User DN
|
userDN: User DN
|
||||||
filter: Filter
|
filter: Filter
|
||||||
groupDN: Group DN
|
|
||||||
testConnection: Test connection
|
|
||||||
success: LDAP connection established!
|
success: LDAP connection established!
|
||||||
password: Password
|
password: Password
|
||||||
samba:
|
samba:
|
||||||
enableSync: Enable synchronization
|
|
||||||
domainController: Domain controller
|
domainController: Domain controller
|
||||||
domainAD: AD domain
|
domainAD: AD domain
|
||||||
userAD: AD user
|
userAD: AD user
|
||||||
groupDN: Group DN
|
|
||||||
passwordAD: AD password
|
passwordAD: AD password
|
||||||
domainPart: User DN (without domain part)
|
domainPart: User DN (without domain part)
|
||||||
verifyCertificate: Verify certificate
|
verifyCertificate: Verify certificate
|
||||||
testConnection: Test connection
|
|
||||||
success: Samba connection established!
|
success: Samba connection established!
|
||||||
accounts:
|
accounts:
|
||||||
homedir: Homedir base
|
homedir: Homedir base
|
||||||
|
@ -147,8 +106,6 @@ connections:
|
||||||
created: Created
|
created: Created
|
||||||
killSession: Kill session
|
killSession: Kill session
|
||||||
acls:
|
acls:
|
||||||
role: Role
|
|
||||||
accessType: Access type
|
|
||||||
permissions: Permission
|
permissions: Permission
|
||||||
search: Search acls
|
search: Search acls
|
||||||
searchInfo: Search acls by model name
|
searchInfo: Search acls by model name
|
||||||
|
|
|
@ -1,27 +1,7 @@
|
||||||
account:
|
account:
|
||||||
pageTitles:
|
|
||||||
users: Usuarios
|
|
||||||
list: Usuarios
|
|
||||||
roles: Roles
|
|
||||||
alias: Alias de correo
|
|
||||||
accounts: Cuentas
|
|
||||||
ldap: LDAP
|
|
||||||
samba: Samba
|
|
||||||
acls: ACLs
|
|
||||||
connections: Conexiones
|
|
||||||
inheritedRoles: Roles heredados
|
|
||||||
newRole: Nuevo rol
|
|
||||||
subRoles: Subroles
|
|
||||||
privileges: Privilegios
|
|
||||||
mailAlias: Alias de correo
|
|
||||||
mailForwarding: Reenvío de correo
|
|
||||||
accountCreate: Nuevo usuario
|
|
||||||
aliasUsers: Usuarios
|
|
||||||
card:
|
card:
|
||||||
nickname: Usuario
|
nickname: Usuario
|
||||||
name: Nombre
|
|
||||||
role: Rol
|
role: Rol
|
||||||
email: Mail
|
|
||||||
alias: Alias
|
alias: Alias
|
||||||
lang: Idioma
|
lang: Idioma
|
||||||
roleFk: Rol
|
roleFk: Rol
|
||||||
|
@ -33,6 +13,9 @@ account:
|
||||||
deactivated: ¡Usuario desactivado!
|
deactivated: ¡Usuario desactivado!
|
||||||
newUser: Nuevo usuario
|
newUser: Nuevo usuario
|
||||||
twoFactor: Doble factor
|
twoFactor: Doble factor
|
||||||
|
enableSync: Habilitar sincronización
|
||||||
|
groupDN: DN grupos
|
||||||
|
testConnection: Probar conexión
|
||||||
privileges:
|
privileges:
|
||||||
delegate: Puede delegar privilegios
|
delegate: Puede delegar privilegios
|
||||||
actions:
|
actions:
|
||||||
|
@ -73,11 +56,7 @@ account:
|
||||||
search: Buscar usuario
|
search: Buscar usuario
|
||||||
searchInfo: Puedes buscar por id, nombre o usuario
|
searchInfo: Puedes buscar por id, nombre o usuario
|
||||||
create:
|
create:
|
||||||
name: Nombre
|
|
||||||
nickname: Nombre mostrado
|
nickname: Nombre mostrado
|
||||||
email: Email
|
|
||||||
role: Rol
|
|
||||||
password: Contraseña
|
|
||||||
active: Activo
|
active: Activo
|
||||||
mailForwarding:
|
mailForwarding:
|
||||||
forwardingMail: Dirección de reenvío
|
forwardingMail: Dirección de reenvío
|
||||||
|
@ -85,51 +64,30 @@ account:
|
||||||
enableMailForwarding: Habilitar redirección de correo
|
enableMailForwarding: Habilitar redirección de correo
|
||||||
mailInputInfo: Todos los correos serán reenviados a la dirección especificada, no se mantendrá copia de los mismos en el buzón del usuario.
|
mailInputInfo: Todos los correos serán reenviados a la dirección especificada, no se mantendrá copia de los mismos en el buzón del usuario.
|
||||||
role:
|
role:
|
||||||
pageTitles:
|
|
||||||
inheritedRoles: Roles heredados
|
|
||||||
subRoles: Subroles
|
|
||||||
newRole: Nuevo rol
|
|
||||||
card:
|
|
||||||
description: Descripción
|
|
||||||
id: Id
|
|
||||||
name: Nombre
|
|
||||||
newRole: Nuevo rol
|
newRole: Nuevo rol
|
||||||
searchRoles: Buscar roles
|
searchRoles: Buscar roles
|
||||||
searchInfo: Buscar rol por id o nombre
|
searchInfo: Buscar rol por id o nombre
|
||||||
name: Nombre
|
|
||||||
description: Descripción
|
description: Descripción
|
||||||
id: Id
|
id: Id
|
||||||
mailAlias:
|
mailAlias:
|
||||||
pageTitles:
|
|
||||||
aliasUsers: Usuarios
|
|
||||||
search: Buscar alias de correo
|
search: Buscar alias de correo
|
||||||
searchInfo: Buscar alias por id o nombre
|
searchInfo: Buscar alias por id o nombre
|
||||||
alias: Alias
|
|
||||||
description: Descripción
|
|
||||||
id: Id
|
|
||||||
newAlias: Nuevo alias
|
newAlias: Nuevo alias
|
||||||
name: Nombre
|
|
||||||
isPublic: Público
|
isPublic: Público
|
||||||
ldap:
|
ldap:
|
||||||
password: Contraseña
|
password: Contraseña
|
||||||
enableSync: Habilitar sincronización
|
|
||||||
server: Servidor
|
server: Servidor
|
||||||
rdn: RDN
|
rdn: RDN
|
||||||
userDN: DN usuarios
|
userDN: DN usuarios
|
||||||
filter: Filtro
|
filter: Filtro
|
||||||
groupDN: DN grupos
|
|
||||||
testConnection: Probar conexión
|
|
||||||
success: ¡Conexión con LDAP establecida!
|
success: ¡Conexión con LDAP establecida!
|
||||||
samba:
|
samba:
|
||||||
enableSync: Habilitar sincronización
|
|
||||||
domainController: Controlador de dominio
|
domainController: Controlador de dominio
|
||||||
domainAD: Dominio AD
|
domainAD: Dominio AD
|
||||||
groupDN: DN grupos
|
|
||||||
userAD: Usuario AD
|
userAD: Usuario AD
|
||||||
passwordAD: Contraseña AD
|
passwordAD: Contraseña AD
|
||||||
domainPart: DN usuarios (sin la parte del dominio)
|
domainPart: DN usuarios (sin la parte del dominio)
|
||||||
verifyCertificate: Verificar certificado
|
verifyCertificate: Verificar certificado
|
||||||
testConnection: Probar conexión
|
|
||||||
success: ¡Conexión con Samba establecida!
|
success: ¡Conexión con Samba establecida!
|
||||||
accounts:
|
accounts:
|
||||||
homedir: Directorio base para carpetas de usuario
|
homedir: Directorio base para carpetas de usuario
|
||||||
|
@ -147,8 +105,6 @@ connections:
|
||||||
created: Creado
|
created: Creado
|
||||||
killSession: Matar sesión
|
killSession: Matar sesión
|
||||||
acls:
|
acls:
|
||||||
role: Rol
|
|
||||||
accessType: Tipo de acceso
|
|
||||||
permissions: Permiso
|
permissions: Permiso
|
||||||
search: Buscar acls
|
search: Buscar acls
|
||||||
searchInfo: Buscar acls por nombre
|
searchInfo: Buscar acls por nombre
|
||||||
|
|
|
@ -55,7 +55,7 @@ const exprBuilder = (param, value) => {
|
||||||
/>
|
/>
|
||||||
<VnSelect
|
<VnSelect
|
||||||
:input-debounce="0"
|
:input-debounce="0"
|
||||||
:label="t('customer.basicData.businessType')"
|
:label="t('customer.summary.businessType')"
|
||||||
:options="businessTypes"
|
:options="businessTypes"
|
||||||
:rules="validate('client.businessTypeFk')"
|
:rules="validate('client.businessTypeFk')"
|
||||||
emit-value
|
emit-value
|
||||||
|
@ -67,13 +67,13 @@ const exprBuilder = (param, value) => {
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInput
|
<VnInput
|
||||||
:label="t('customer.basicData.contact')"
|
:label="t('customer.summary.contact')"
|
||||||
:rules="validate('client.contact')"
|
:rules="validate('client.contact')"
|
||||||
clearable
|
clearable
|
||||||
v-model="data.contact"
|
v-model="data.contact"
|
||||||
/>
|
/>
|
||||||
<VnInput
|
<VnInput
|
||||||
:label="t('customer.basicData.email')"
|
:label="t('globals.params.email')"
|
||||||
:rules="validate('client.email')"
|
:rules="validate('client.email')"
|
||||||
clearable
|
clearable
|
||||||
type="email"
|
type="email"
|
||||||
|
@ -90,13 +90,13 @@ const exprBuilder = (param, value) => {
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInput
|
<VnInput
|
||||||
:label="t('customer.basicData.phone')"
|
:label="t('customer.extendedList.tableVisibleColumns.phone')"
|
||||||
:rules="validate('client.phone')"
|
:rules="validate('client.phone')"
|
||||||
clearable
|
clearable
|
||||||
v-model="data.phone"
|
v-model="data.phone"
|
||||||
/>
|
/>
|
||||||
<VnInput
|
<VnInput
|
||||||
:label="t('customer.basicData.mobile')"
|
:label="t('customer.summary.mobile')"
|
||||||
:rules="validate('client.mobile')"
|
:rules="validate('client.mobile')"
|
||||||
clearable
|
clearable
|
||||||
v-model="data.mobile"
|
v-model="data.mobile"
|
||||||
|
@ -106,7 +106,7 @@ const exprBuilder = (param, value) => {
|
||||||
<VnSelect
|
<VnSelect
|
||||||
url="Workers/search"
|
url="Workers/search"
|
||||||
v-model="data.salesPersonFk"
|
v-model="data.salesPersonFk"
|
||||||
:label="t('customer.basicData.salesPerson')"
|
:label="t('customer.summary.salesPerson')"
|
||||||
:params="{
|
:params="{
|
||||||
departmentCodes: ['VT', 'shopping'],
|
departmentCodes: ['VT', 'shopping'],
|
||||||
}"
|
}"
|
||||||
|
@ -144,7 +144,7 @@ const exprBuilder = (param, value) => {
|
||||||
option-value="id"
|
option-value="id"
|
||||||
option-label="name"
|
option-label="name"
|
||||||
emit-value
|
emit-value
|
||||||
:label="t('customer.basicData.contactChannel')"
|
:label="t('customer.summary.contactChannel')"
|
||||||
map-options
|
map-options
|
||||||
:rules="validate('client.contactChannelFk')"
|
:rules="validate('client.contactChannelFk')"
|
||||||
:input-debounce="0"
|
:input-debounce="0"
|
||||||
|
|
|
@ -53,11 +53,17 @@ const setData = (entity) => (data.value = useCardDescription(entity?.name, entit
|
||||||
<CustomerDescriptorMenu :customer="entity" />
|
<CustomerDescriptorMenu :customer="entity" />
|
||||||
</template>
|
</template>
|
||||||
<template #body="{ entity }">
|
<template #body="{ entity }">
|
||||||
<VnLv :label="t('customer.card.payMethod')" :value="entity.payMethod.name" />
|
|
||||||
|
|
||||||
<VnLv :label="t('customer.card.credit')" :value="toCurrency(entity.credit)" />
|
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('customer.card.securedCredit')"
|
:label="t('customer.summary.payMethod')"
|
||||||
|
:value="entity.payMethod.name"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<VnLv
|
||||||
|
:label="t('customer.summary.credit')"
|
||||||
|
:value="toCurrency(entity.credit)"
|
||||||
|
/>
|
||||||
|
<VnLv
|
||||||
|
:label="t('customer.summary.securedCredit')"
|
||||||
:value="toCurrency(entity.creditInsurance)"
|
:value="toCurrency(entity.creditInsurance)"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
@ -66,7 +72,7 @@ const setData = (entity) => (data.value = useCardDescription(entity?.name, entit
|
||||||
:value="toCurrency(entity.debt)"
|
:value="toCurrency(entity.debt)"
|
||||||
:info="t('customer.summary.riskInfo')"
|
:info="t('customer.summary.riskInfo')"
|
||||||
/>
|
/>
|
||||||
<VnLv :label="t('customer.card.salesPerson')">
|
<VnLv :label="t('customer.summary.salesPerson')">
|
||||||
<template #value>
|
<template #value>
|
||||||
<VnUserLink
|
<VnUserLink
|
||||||
v-if="entity.salesPersonUser"
|
v-if="entity.salesPersonUser"
|
||||||
|
@ -77,7 +83,7 @@ const setData = (entity) => (data.value = useCardDescription(entity?.name, entit
|
||||||
</template>
|
</template>
|
||||||
</VnLv>
|
</VnLv>
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('customer.card.businessTypeFk')"
|
:label="t('customer.extendedList.tableVisibleColumns.businessTypeFk')"
|
||||||
:value="entity.businessType.description"
|
:value="entity.businessType.description"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
@ -168,23 +174,6 @@ const setData = (entity) => (data.value = useCardDescription(entity?.name, entit
|
||||||
>
|
>
|
||||||
<QTooltip>{{ t('Customer ticket list') }}</QTooltip>
|
<QTooltip>{{ t('Customer ticket list') }}</QTooltip>
|
||||||
</QBtn>
|
</QBtn>
|
||||||
<QBtn
|
|
||||||
:to="{
|
|
||||||
name: 'TicketList',
|
|
||||||
query: {
|
|
||||||
table: JSON.stringify({
|
|
||||||
clientFk: entity.id,
|
|
||||||
}),
|
|
||||||
createForm: JSON.stringify({ clientId: entity.id }),
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
size="md"
|
|
||||||
color="primary"
|
|
||||||
target="_blank"
|
|
||||||
icon="vn:ticketAdd"
|
|
||||||
>
|
|
||||||
<QTooltip>{{ t('New ticket') }}</QTooltip>
|
|
||||||
</QBtn>
|
|
||||||
<QBtn
|
<QBtn
|
||||||
:to="{
|
:to="{
|
||||||
name: 'InvoiceOutList',
|
name: 'InvoiceOutList',
|
||||||
|
@ -196,23 +185,6 @@ const setData = (entity) => (data.value = useCardDescription(entity?.name, entit
|
||||||
>
|
>
|
||||||
<QTooltip>{{ t('Customer invoice out list') }}</QTooltip>
|
<QTooltip>{{ t('Customer invoice out list') }}</QTooltip>
|
||||||
</QBtn>
|
</QBtn>
|
||||||
<QBtn
|
|
||||||
:to="{
|
|
||||||
name: 'OrderList',
|
|
||||||
query: {
|
|
||||||
table: JSON.stringify({
|
|
||||||
clientFk: entity.id,
|
|
||||||
}),
|
|
||||||
createForm: JSON.stringify({ clientFk: entity.id }),
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
size="md"
|
|
||||||
target="_blank"
|
|
||||||
icon="vn:basketadd"
|
|
||||||
color="primary"
|
|
||||||
>
|
|
||||||
<QTooltip>{{ t('New order') }}</QTooltip>
|
|
||||||
</QBtn>
|
|
||||||
<QBtn
|
<QBtn
|
||||||
:to="{
|
:to="{
|
||||||
name: 'AccountSummary',
|
name: 'AccountSummary',
|
||||||
|
|
|
@ -6,8 +6,8 @@ import axios from 'axios';
|
||||||
import { useQuasar } from 'quasar';
|
import { useQuasar } from 'quasar';
|
||||||
|
|
||||||
import useNotify from 'src/composables/useNotify';
|
import useNotify from 'src/composables/useNotify';
|
||||||
|
|
||||||
import VnSmsDialog from 'src/components/common/VnSmsDialog.vue';
|
import VnSmsDialog from 'src/components/common/VnSmsDialog.vue';
|
||||||
|
import useOpenURL from 'src/composables/useOpenURL';
|
||||||
|
|
||||||
const $props = defineProps({
|
const $props = defineProps({
|
||||||
customer: {
|
customer: {
|
||||||
|
@ -15,7 +15,6 @@ const $props = defineProps({
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const { notify } = useNotify();
|
const { notify } = useNotify();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const quasar = useQuasar();
|
const quasar = useQuasar();
|
||||||
|
@ -25,7 +24,7 @@ const showSmsDialog = () => {
|
||||||
quasar.dialog({
|
quasar.dialog({
|
||||||
component: VnSmsDialog,
|
component: VnSmsDialog,
|
||||||
componentProps: {
|
componentProps: {
|
||||||
phone: $props.customer.phone || $props.customer.mobile,
|
phone: $props.customer.mobile || $props.customer.phone,
|
||||||
promise: sendSms,
|
promise: sendSms,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -40,9 +39,42 @@ const sendSms = async (payload) => {
|
||||||
notify(error.message, 'positive');
|
notify(error.message, 'positive');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const openCreateForm = (type) => {
|
||||||
|
const query = {
|
||||||
|
table: {
|
||||||
|
clientFk: $props.customer.id,
|
||||||
|
},
|
||||||
|
createForm: {
|
||||||
|
addressId: $props.customer.defaultAddressFk,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const clientFk = {
|
||||||
|
ticket: 'clientId',
|
||||||
|
order: 'clientFk',
|
||||||
|
};
|
||||||
|
const key = clientFk[type];
|
||||||
|
if (!key) return;
|
||||||
|
query.createForm[key] = $props.customer.id;
|
||||||
|
|
||||||
|
const params = Object.entries(query)
|
||||||
|
.map(([key, value]) => `${key}=${JSON.stringify(value)}`)
|
||||||
|
.join('&');
|
||||||
|
useOpenURL(`/#/${type}/list?${params}`);
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
<QItem v-ripple clickable @click="openCreateForm('ticket')">
|
||||||
|
<QItemSection>
|
||||||
|
{{ t('globals.pageTitles.createTicket') }}
|
||||||
|
</QItemSection>
|
||||||
|
</QItem>
|
||||||
|
<QItem v-ripple clickable @click="openCreateForm('order')">
|
||||||
|
<QItemSection>
|
||||||
|
{{ t('globals.pageTitles.createOrder') }}
|
||||||
|
</QItemSection>
|
||||||
|
</QItem>
|
||||||
<QItem v-ripple clickable>
|
<QItem v-ripple clickable>
|
||||||
<QItemSection @click="showSmsDialog()">{{ t('Send SMS') }}</QItemSection>
|
<QItemSection @click="showSmsDialog()">{{ t('Send SMS') }}</QItemSection>
|
||||||
</QItem>
|
</QItem>
|
||||||
|
|
|
@ -87,7 +87,7 @@ const sumRisk = ({ clientRisks }) => {
|
||||||
<VnLv :label="t('customer.summary.contact')" :value="entity.contact" />
|
<VnLv :label="t('customer.summary.contact')" :value="entity.contact" />
|
||||||
<VnLv :value="entity.phone">
|
<VnLv :value="entity.phone">
|
||||||
<template #label>
|
<template #label>
|
||||||
{{ t('customer.summary.phone') }}
|
{{ t('customer.extendedList.tableVisibleColumns.phone') }}
|
||||||
<VnLinkPhone :phone-number="entity.phone" />
|
<VnLinkPhone :phone-number="entity.phone" />
|
||||||
</template>
|
</template>
|
||||||
</VnLv>
|
</VnLv>
|
||||||
|
@ -95,11 +95,17 @@ const sumRisk = ({ clientRisks }) => {
|
||||||
<template #label>
|
<template #label>
|
||||||
{{ t('customer.summary.mobile') }}
|
{{ t('customer.summary.mobile') }}
|
||||||
<VnLinkPhone :phone-number="entity.mobile" />
|
<VnLinkPhone :phone-number="entity.mobile" />
|
||||||
|
<VnLinkPhone
|
||||||
|
say-simple
|
||||||
|
:phone-number="entity.mobile"
|
||||||
|
:channel="entity.country?.saySimpleCountry?.channel"
|
||||||
|
class="q-ml-xs"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
</VnLv>
|
</VnLv>
|
||||||
<VnLv :value="entity.email" copy
|
<VnLv :value="entity.email" copy
|
||||||
><template #label>
|
><template #label>
|
||||||
{{ t('customer.summary.email') }}
|
{{ t('globals.params.email') }}
|
||||||
<VnLinkMail email="entity.email"></VnLinkMail> </template
|
<VnLinkMail email="entity.email"></VnLinkMail> </template
|
||||||
></VnLv>
|
></VnLv>
|
||||||
<VnLv
|
<VnLv
|
||||||
|
@ -142,7 +148,7 @@ const sumRisk = ({ clientRisks }) => {
|
||||||
<VnLv
|
<VnLv
|
||||||
v-if="entity.country"
|
v-if="entity.country"
|
||||||
:label="t('customer.summary.country')"
|
:label="t('customer.summary.country')"
|
||||||
:value="entity.country.country"
|
:value="entity.country.name"
|
||||||
/>
|
/>
|
||||||
<VnLv :label="t('customer.summary.street')" :value="entity.street" />
|
<VnLv :label="t('customer.summary.street')" :value="entity.street" />
|
||||||
</QCard>
|
</QCard>
|
||||||
|
@ -213,7 +219,7 @@ const sumRisk = ({ clientRisks }) => {
|
||||||
:value="entity.defaultAddress.city"
|
:value="entity.defaultAddress.city"
|
||||||
/>
|
/>
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('customer.summary.addressStreet')"
|
:label="t('customer.summary.street')"
|
||||||
:value="entity.defaultAddress.street"
|
:value="entity.defaultAddress.street"
|
||||||
/>
|
/>
|
||||||
</QCard>
|
</QCard>
|
||||||
|
|
|
@ -2,10 +2,9 @@
|
||||||
import { computed, onBeforeMount, ref, watch, nextTick } from 'vue';
|
import { computed, onBeforeMount, ref, watch, nextTick } from 'vue';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
|
|
||||||
import VnInputDate from 'components/common/VnInputDate.vue';
|
import VnInputDate from 'components/common/VnInputDate.vue';
|
||||||
import VnInput from 'src/components/common/VnInput.vue';
|
import VnInput from 'src/components/common/VnInput.vue';
|
||||||
|
import VnRow from 'components/ui/VnRow.vue';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import useNotify from 'src/composables/useNotify';
|
import useNotify from 'src/composables/useNotify';
|
||||||
import { useStateStore } from 'stores/useStateStore';
|
import { useStateStore } from 'stores/useStateStore';
|
||||||
|
|
|
@ -34,7 +34,7 @@ defineProps({
|
||||||
<QItem class="q-mb-sm">
|
<QItem class="q-mb-sm">
|
||||||
<QItemSection>
|
<QItemSection>
|
||||||
<VnInput
|
<VnInput
|
||||||
:label="t('customerFilter.filter.name')"
|
:label="t('globals.name')"
|
||||||
v-model="params.name"
|
v-model="params.name"
|
||||||
is-outlined
|
is-outlined
|
||||||
/>
|
/>
|
||||||
|
@ -43,7 +43,7 @@ defineProps({
|
||||||
<QItem class="q-mb-sm">
|
<QItem class="q-mb-sm">
|
||||||
<QItemSection>
|
<QItemSection>
|
||||||
<VnInput
|
<VnInput
|
||||||
:label="t('customerFilter.filter.socialName')"
|
:label="t('customer.summary.socialName')"
|
||||||
v-model="params.socialName"
|
v-model="params.socialName"
|
||||||
is-outlined
|
is-outlined
|
||||||
/>
|
/>
|
||||||
|
@ -53,7 +53,7 @@ defineProps({
|
||||||
<QItemSection>
|
<QItemSection>
|
||||||
<VnSelect
|
<VnSelect
|
||||||
url="Workers/activeWithInheritedRole"
|
url="Workers/activeWithInheritedRole"
|
||||||
:filter="{ where: { role: 'salesPerson' } }"
|
:where="{ role: 'salesPerson' }"
|
||||||
auto-load
|
auto-load
|
||||||
:label="t('Salesperson')"
|
:label="t('Salesperson')"
|
||||||
v-model="params.salesPersonFk"
|
v-model="params.salesPersonFk"
|
||||||
|
@ -67,7 +67,6 @@ defineProps({
|
||||||
dense
|
dense
|
||||||
outlined
|
outlined
|
||||||
rounded
|
rounded
|
||||||
:input-debounce="0"
|
|
||||||
/>
|
/>
|
||||||
</QItemSection>
|
</QItemSection>
|
||||||
</QItem>
|
</QItem>
|
||||||
|
|
|
@ -77,7 +77,7 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('customer.extendedList.tableVisibleColumns.credit'),
|
label: t('customer.summary.credit'),
|
||||||
name: 'credit',
|
name: 'credit',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
component: 'number',
|
component: 'number',
|
||||||
|
@ -115,7 +115,7 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('customer.extendedList.tableVisibleColumns.mobile'),
|
label: t('customer.summary.mobile'),
|
||||||
name: 'mobile',
|
name: 'mobile',
|
||||||
cardVisible: true,
|
cardVisible: true,
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
|
@ -162,17 +162,17 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('customer.extendedList.tableVisibleColumns.city'),
|
label: t('customer.summary.city'),
|
||||||
name: 'city',
|
name: 'city',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('customer.extendedList.tableVisibleColumns.postcode'),
|
label: t('customer.summary.postcode'),
|
||||||
name: 'postcode',
|
name: 'postcode',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('customer.extendedList.tableVisibleColumns.email'),
|
label: t('globals.params.email'),
|
||||||
name: 'email',
|
name: 'email',
|
||||||
cardVisible: true,
|
cardVisible: true,
|
||||||
},
|
},
|
||||||
|
@ -207,7 +207,7 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('customer.extendedList.tableVisibleColumns.payMethodFk'),
|
label: t('customer.summary.payMethodFk'),
|
||||||
name: 'payMethodFk',
|
name: 'payMethodFk',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
component: 'select',
|
component: 'select',
|
||||||
|
@ -250,7 +250,7 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('customer.extendedList.tableVisibleColumns.isActive'),
|
label: t('customer.summary.isActive'),
|
||||||
name: 'isActive',
|
name: 'isActive',
|
||||||
chip: {
|
chip: {
|
||||||
color: null,
|
color: null,
|
||||||
|
@ -279,7 +279,7 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('customer.extendedList.tableVisibleColumns.isEqualizated'),
|
label: t('customer.summary.isEqualizated'),
|
||||||
name: 'isEqualizated',
|
name: 'isEqualizated',
|
||||||
create: true,
|
create: true,
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
|
@ -325,7 +325,7 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('customer.extendedList.tableVisibleColumns.hasLcr'),
|
label: t('customer.summary.hasLcr'),
|
||||||
name: 'hasLcr',
|
name: 'hasLcr',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
inWhere: true,
|
inWhere: true,
|
||||||
|
@ -333,7 +333,7 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('customer.extendedList.tableVisibleColumns.hasCoreVnl'),
|
label: t('customer.summary.hasCoreVnl'),
|
||||||
name: 'hasCoreVnl',
|
name: 'hasCoreVnl',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
inWhere: true,
|
inWhere: true,
|
||||||
|
@ -424,7 +424,7 @@ function handleLocation(data, location) {
|
||||||
<VnSelect
|
<VnSelect
|
||||||
url="Workers/search"
|
url="Workers/search"
|
||||||
v-model="data.salesPersonFk"
|
v-model="data.salesPersonFk"
|
||||||
:label="t('customer.basicData.salesPerson')"
|
:label="t('customer.summary.salesPerson')"
|
||||||
:params="{
|
:params="{
|
||||||
departmentCodes: ['VT', 'shopping'],
|
departmentCodes: ['VT', 'shopping'],
|
||||||
}"
|
}"
|
||||||
|
|
|
@ -191,16 +191,17 @@ const getItemPackagingType = (ticketSales) => {
|
||||||
class="full-width"
|
class="full-width"
|
||||||
:disable-infinite-scroll="true"
|
:disable-infinite-scroll="true"
|
||||||
:search-url="false"
|
:search-url="false"
|
||||||
|
redirect="ticket"
|
||||||
>
|
>
|
||||||
<template #column-nickname="{ row }">
|
<template #column-nickname="{ row }">
|
||||||
<span class="link">
|
<span class="link" @click.stop>
|
||||||
{{ row.nickname }}
|
{{ row.nickname }}
|
||||||
<CustomerDescriptorProxy :id="row.clientFk" />
|
<CustomerDescriptorProxy :id="row.clientFk" />
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template #column-routeFk="{ row }">
|
<template #column-routeFk="{ row }">
|
||||||
<span class="link">
|
<span class="link" @click.stop>
|
||||||
{{ row.routeFk }}
|
{{ row.routeFk }}
|
||||||
<RouteDescriptorProxy :id="row.routeFk" />
|
<RouteDescriptorProxy :id="row.routeFk" />
|
||||||
</span>
|
</span>
|
||||||
|
@ -217,7 +218,7 @@ const getItemPackagingType = (ticketSales) => {
|
||||||
<span v-else> {{ toCurrency(row.totalWithVat) }}</span>
|
<span v-else> {{ toCurrency(row.totalWithVat) }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template #column-state="{ row }">
|
<template #column-state="{ row }">
|
||||||
<span v-if="row.invoiceOut">
|
<span v-if="row.invoiceOut" @click.stop>
|
||||||
<span :class="{ link: row.invoiceOut.ref }">
|
<span :class="{ link: row.invoiceOut.ref }">
|
||||||
{{ row.invoiceOut.ref }}
|
{{ row.invoiceOut.ref }}
|
||||||
<InvoiceOutDescriptorProxy :id="row.invoiceOut.id" />
|
<InvoiceOutDescriptorProxy :id="row.invoiceOut.id" />
|
||||||
|
|
|
@ -1,21 +1,5 @@
|
||||||
customerFilter:
|
|
||||||
filter:
|
|
||||||
name: Name
|
|
||||||
socialName: Social name
|
|
||||||
customer:
|
customer:
|
||||||
list:
|
|
||||||
phone: Phone
|
|
||||||
email: Email
|
|
||||||
customerOrders: Display customer orders
|
|
||||||
moreOptions: More options
|
|
||||||
card:
|
card:
|
||||||
customerList: Customer list
|
|
||||||
customerId: Claim ID
|
|
||||||
salesPerson: Sales person
|
|
||||||
credit: Credit
|
|
||||||
risk: Risk
|
|
||||||
securedCredit: Secured credit
|
|
||||||
payMethod: Pay method
|
|
||||||
debt: Debt
|
debt: Debt
|
||||||
isFrozen: Customer frozen
|
isFrozen: Customer frozen
|
||||||
hasDebt: Customer has debt
|
hasDebt: Customer has debt
|
||||||
|
@ -23,9 +7,7 @@ customer:
|
||||||
notChecked: Customer no checked
|
notChecked: Customer no checked
|
||||||
webAccountInactive: Web account inactive
|
webAccountInactive: Web account inactive
|
||||||
noWebAccess: Web access is disabled
|
noWebAccess: Web access is disabled
|
||||||
businessType: Business type
|
|
||||||
passwordRequirements: 'The password must have at least { length } length characters, {nAlpha} alphabetic characters, {nUpper} capital letters, {nDigits} digits and {nPunct} symbols (Ex: $%&.)\n'
|
passwordRequirements: 'The password must have at least { length } length characters, {nAlpha} alphabetic characters, {nUpper} capital letters, {nDigits} digits and {nPunct} symbols (Ex: $%&.)\n'
|
||||||
businessTypeFk: Business type
|
|
||||||
summary:
|
summary:
|
||||||
basicData: Basic data
|
basicData: Basic data
|
||||||
fiscalAddress: Fiscal address
|
fiscalAddress: Fiscal address
|
||||||
|
@ -37,9 +19,7 @@ customer:
|
||||||
customerId: Customer ID
|
customerId: Customer ID
|
||||||
name: Name
|
name: Name
|
||||||
contact: Contact
|
contact: Contact
|
||||||
phone: Phone
|
|
||||||
mobile: Mobile
|
mobile: Mobile
|
||||||
email: Email
|
|
||||||
salesPerson: Sales person
|
salesPerson: Sales person
|
||||||
contactChannel: Contact channel
|
contactChannel: Contact channel
|
||||||
socialName: Social name
|
socialName: Social name
|
||||||
|
@ -63,7 +43,6 @@ customer:
|
||||||
hasB2BVnl: Has B2B VNL
|
hasB2BVnl: Has B2B VNL
|
||||||
addressName: Address name
|
addressName: Address name
|
||||||
addressCity: City
|
addressCity: City
|
||||||
addressStreet: Street
|
|
||||||
username: Username
|
username: Username
|
||||||
webAccess: Web access
|
webAccess: Web access
|
||||||
totalGreuge: Total greuge
|
totalGreuge: Total greuge
|
||||||
|
@ -92,45 +71,27 @@ customer:
|
||||||
goToLines: Go to lines
|
goToLines: Go to lines
|
||||||
basicData:
|
basicData:
|
||||||
socialName: Fiscal name
|
socialName: Fiscal name
|
||||||
businessType: Business type
|
|
||||||
contact: Contact
|
|
||||||
youCanSaveMultipleEmails: You can save multiple emails
|
youCanSaveMultipleEmails: You can save multiple emails
|
||||||
email: Email
|
|
||||||
phone: Phone
|
|
||||||
mobile: Mobile
|
|
||||||
salesPerson: Sales person
|
|
||||||
contactChannel: Contact channel
|
|
||||||
previousClient: Previous client
|
previousClient: Previous client
|
||||||
extendedList:
|
extendedList:
|
||||||
tableVisibleColumns:
|
tableVisibleColumns:
|
||||||
id: Identifier
|
id: Identifier
|
||||||
name: Name
|
|
||||||
socialName: Social name
|
socialName: Social name
|
||||||
fi: Tax number
|
fi: Tax number
|
||||||
salesPersonFk: Salesperson
|
salesPersonFk: Salesperson
|
||||||
credit: Credit
|
|
||||||
creditInsurance: Credit insurance
|
creditInsurance: Credit insurance
|
||||||
phone: Phone
|
phone: Phone
|
||||||
mobile: Mobile
|
|
||||||
street: Street
|
street: Street
|
||||||
countryFk: Country
|
countryFk: Country
|
||||||
provinceFk: Province
|
provinceFk: Province
|
||||||
city: City
|
|
||||||
postcode: Postcode
|
|
||||||
email: Email
|
|
||||||
created: Created
|
created: Created
|
||||||
businessTypeFk: Business type
|
businessTypeFk: Business type
|
||||||
payMethodFk: Billing data
|
|
||||||
sageTaxTypeFk: Sage tax type
|
sageTaxTypeFk: Sage tax type
|
||||||
sageTransactionTypeFk: Sage tr. type
|
sageTransactionTypeFk: Sage tr. type
|
||||||
isActive: Active
|
|
||||||
isVies: Vies
|
isVies: Vies
|
||||||
isTaxDataChecked: Verified data
|
isTaxDataChecked: Verified data
|
||||||
isEqualizated: Is equalizated
|
|
||||||
isFreezed: Freezed
|
isFreezed: Freezed
|
||||||
hasToInvoice: Invoice
|
hasToInvoice: Invoice
|
||||||
hasToInvoiceByAddress: Invoice by address
|
hasToInvoiceByAddress: Invoice by address
|
||||||
isToBeMailed: Mailing
|
isToBeMailed: Mailing
|
||||||
hasLcr: Received LCR
|
|
||||||
hasCoreVnl: VNL core received
|
|
||||||
hasSepaVnl: VNL B2B received
|
hasSepaVnl: VNL B2B received
|
||||||
|
|
|
@ -1,22 +1,7 @@
|
||||||
Search customer: Buscar cliente
|
Search customer: Buscar cliente
|
||||||
You can search by customer id or name: Puedes buscar por id o nombre del cliente
|
You can search by customer id or name: Puedes buscar por id o nombre del cliente
|
||||||
customerFilter:
|
|
||||||
filter:
|
|
||||||
name: Nombre
|
|
||||||
socialName: Razón Social
|
|
||||||
customer:
|
customer:
|
||||||
list:
|
|
||||||
phone: Teléfono
|
|
||||||
email: Email
|
|
||||||
customerOrders: Mostrar órdenes del cliente
|
|
||||||
moreOptions: Más opciones
|
|
||||||
card:
|
card:
|
||||||
customerId: ID cliente
|
|
||||||
salesPerson: Comercial
|
|
||||||
credit: Crédito
|
|
||||||
risk: Riesgo
|
|
||||||
securedCredit: Crédito asegurado
|
|
||||||
payMethod: Método de pago
|
|
||||||
debt: Riesgo
|
debt: Riesgo
|
||||||
isFrozen: Cliente congelado
|
isFrozen: Cliente congelado
|
||||||
hasDebt: Cliente con riesgo
|
hasDebt: Cliente con riesgo
|
||||||
|
@ -24,9 +9,7 @@ customer:
|
||||||
notChecked: Cliente no comprobado
|
notChecked: Cliente no comprobado
|
||||||
webAccountInactive: Sin acceso web
|
webAccountInactive: Sin acceso web
|
||||||
noWebAccess: El acceso web está desactivado
|
noWebAccess: El acceso web está desactivado
|
||||||
businessType: Tipo de negocio
|
|
||||||
passwordRequirements: 'La contraseña debe tener al menos { length } caracteres de longitud, {nAlpha} caracteres alfabéticos, {nUpper} letras mayúsculas, {nDigits} dígitos y {nPunct} símbolos (Ej: $%&.)'
|
passwordRequirements: 'La contraseña debe tener al menos { length } caracteres de longitud, {nAlpha} caracteres alfabéticos, {nUpper} letras mayúsculas, {nDigits} dígitos y {nPunct} símbolos (Ej: $%&.)'
|
||||||
businessTypeFk: Tipo de negocio
|
|
||||||
summary:
|
summary:
|
||||||
basicData: Datos básicos
|
basicData: Datos básicos
|
||||||
fiscalAddress: Dirección fiscal
|
fiscalAddress: Dirección fiscal
|
||||||
|
@ -38,9 +21,7 @@ customer:
|
||||||
customerId: ID cliente
|
customerId: ID cliente
|
||||||
name: Nombre
|
name: Nombre
|
||||||
contact: Contacto
|
contact: Contacto
|
||||||
phone: Teléfono
|
|
||||||
mobile: Móvil
|
mobile: Móvil
|
||||||
email: Email
|
|
||||||
salesPerson: Comercial
|
salesPerson: Comercial
|
||||||
contactChannel: Canal de contacto
|
contactChannel: Canal de contacto
|
||||||
socialName: Razón social
|
socialName: Razón social
|
||||||
|
@ -64,7 +45,6 @@ customer:
|
||||||
hasB2BVnl: Recibido B2B VNL
|
hasB2BVnl: Recibido B2B VNL
|
||||||
addressName: Nombre de la dirección
|
addressName: Nombre de la dirección
|
||||||
addressCity: Ciudad
|
addressCity: Ciudad
|
||||||
addressStreet: Calle
|
|
||||||
username: Usuario
|
username: Usuario
|
||||||
webAccess: Acceso web
|
webAccess: Acceso web
|
||||||
totalGreuge: Greuge total
|
totalGreuge: Greuge total
|
||||||
|
@ -93,45 +73,27 @@ customer:
|
||||||
goToLines: Ir a líneas
|
goToLines: Ir a líneas
|
||||||
basicData:
|
basicData:
|
||||||
socialName: Nombre fiscal
|
socialName: Nombre fiscal
|
||||||
businessType: Tipo de negocio
|
|
||||||
contact: Contacto
|
|
||||||
youCanSaveMultipleEmails: Puede guardar varios correos electrónicos encadenándolos mediante comas sin espacios{','} ejemplo{':'} user{'@'}dominio{'.'}com, user2{'@'}dominio{'.'}com siendo el primer correo electrónico el principal
|
youCanSaveMultipleEmails: Puede guardar varios correos electrónicos encadenándolos mediante comas sin espacios{','} ejemplo{':'} user{'@'}dominio{'.'}com, user2{'@'}dominio{'.'}com siendo el primer correo electrónico el principal
|
||||||
email: Email
|
|
||||||
phone: Teléfono
|
|
||||||
mobile: Móvil
|
|
||||||
salesPerson: Comercial
|
|
||||||
contactChannel: Canal de contacto
|
|
||||||
previousClient: Cliente anterior
|
previousClient: Cliente anterior
|
||||||
extendedList:
|
extendedList:
|
||||||
tableVisibleColumns:
|
tableVisibleColumns:
|
||||||
id: Identificador
|
id: Identificador
|
||||||
name: Nombre
|
|
||||||
socialName: Razón social
|
socialName: Razón social
|
||||||
fi: NIF / CIF
|
fi: NIF / CIF
|
||||||
salesPersonFk: Comercial
|
salesPersonFk: Comercial
|
||||||
credit: Crédito
|
|
||||||
creditInsurance: Crédito asegurado
|
creditInsurance: Crédito asegurado
|
||||||
phone: Teléfono
|
phone: Teléfono
|
||||||
mobile: Móvil
|
|
||||||
street: Dirección fiscal
|
street: Dirección fiscal
|
||||||
countryFk: País
|
countryFk: País
|
||||||
provinceFk: Provincia
|
provinceFk: Provincia
|
||||||
city: Población
|
|
||||||
postcode: Código postal
|
|
||||||
email: Email
|
|
||||||
created: Fecha creación
|
created: Fecha creación
|
||||||
businessTypeFk: Tipo de negocio
|
businessTypeFk: Tipo de negocio
|
||||||
payMethodFk: Forma de pago
|
|
||||||
sageTaxTypeFk: Tipo de impuesto Sage
|
sageTaxTypeFk: Tipo de impuesto Sage
|
||||||
sageTransactionTypeFk: Tipo tr. sage
|
sageTransactionTypeFk: Tipo tr. sage
|
||||||
isActive: Activo
|
|
||||||
isVies: Vies
|
isVies: Vies
|
||||||
isTaxDataChecked: Datos comprobados
|
isTaxDataChecked: Datos comprobados
|
||||||
isEqualizated: Recargo de equivalencias
|
|
||||||
isFreezed: Congelado
|
isFreezed: Congelado
|
||||||
hasToInvoice: Factura
|
hasToInvoice: Factura
|
||||||
hasToInvoiceByAddress: Factura por consigna
|
hasToInvoiceByAddress: Factura por consigna
|
||||||
isToBeMailed: Env. emails
|
isToBeMailed: Env. emails
|
||||||
hasLcr: Recibido LCR
|
|
||||||
hasCoreVnl: Recibido core VNL
|
|
||||||
hasSepaVnl: Recibido B2B VNL
|
hasSepaVnl: Recibido B2B VNL
|
||||||
|
|
|
@ -20,16 +20,16 @@ const { t } = useI18n();
|
||||||
<template #form="{ data, validate }">
|
<template #form="{ data, validate }">
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInput
|
<VnInput
|
||||||
:label="t('department.name')"
|
:label="t('globals.name')"
|
||||||
v-model="data.name"
|
v-model="data.name"
|
||||||
:rules="validate('department.name')"
|
:rules="validate('globals.name')"
|
||||||
clearable
|
clearable
|
||||||
autofocus
|
autofocus
|
||||||
/>
|
/>
|
||||||
<VnInput
|
<VnInput
|
||||||
v-model="data.code"
|
v-model="data.code"
|
||||||
:label="t('department.code')"
|
:label="t('globals.code')"
|
||||||
:rules="validate('department.code')"
|
:rules="validate('globals.code')"
|
||||||
clearable
|
clearable
|
||||||
/>
|
/>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
|
@ -42,8 +42,8 @@ const { t } = useI18n();
|
||||||
/>
|
/>
|
||||||
<VnInput
|
<VnInput
|
||||||
v-model="data.notificationEmail"
|
v-model="data.notificationEmail"
|
||||||
:label="t('department.email')"
|
:label="t('globals.params.email')"
|
||||||
:rules="validate('department.email')"
|
:rules="validate('globals.params.email')"
|
||||||
clearable
|
clearable
|
||||||
/>
|
/>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
|
|
|
@ -45,16 +45,8 @@ onMounted(async () => {
|
||||||
/>
|
/>
|
||||||
<div class="full-width row wrap justify-between content-between">
|
<div class="full-width row wrap justify-between content-between">
|
||||||
<div class="column" style="min-width: 50%">
|
<div class="column" style="min-width: 50%">
|
||||||
<VnLv
|
<VnLv :label="t('globals.name')" :value="department.name" dash />
|
||||||
:label="t('department.name')"
|
<VnLv :label="t('globals.code')" :value="department.code" dash />
|
||||||
:value="department.name"
|
|
||||||
dash
|
|
||||||
/>
|
|
||||||
<VnLv
|
|
||||||
:label="t('department.code')"
|
|
||||||
:value="department.code"
|
|
||||||
dash
|
|
||||||
/>
|
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('department.chat')"
|
:label="t('department.chat')"
|
||||||
:value="department.chatName"
|
:value="department.chatName"
|
||||||
|
|
|
@ -44,16 +44,15 @@ const onFilterTravelSelected = (formData, id) => {
|
||||||
auto-load
|
auto-load
|
||||||
/>
|
/>
|
||||||
<FormModel
|
<FormModel
|
||||||
:url="`Entries/${route.params.id}`"
|
|
||||||
:url-update="`Entries/${route.params.id}`"
|
:url-update="`Entries/${route.params.id}`"
|
||||||
model="entry"
|
model="Entry"
|
||||||
auto-load
|
auto-load
|
||||||
:clear-store-on-unmount="false"
|
:clear-store-on-unmount="false"
|
||||||
>
|
>
|
||||||
<template #form="{ data }">
|
<template #form="{ data }">
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnSelect
|
<VnSelect
|
||||||
:label="t('entry.basicData.supplier')"
|
:label="t('globals.supplier')"
|
||||||
v-model="data.supplierFk"
|
v-model="data.supplierFk"
|
||||||
url="Suppliers"
|
url="Suppliers"
|
||||||
option-value="id"
|
option-value="id"
|
||||||
|
@ -108,18 +107,15 @@ const onFilterTravelSelected = (formData, id) => {
|
||||||
</VnSelectDialog>
|
</VnSelectDialog>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInput
|
<VnInput v-model="data.reference" :label="t('globals.reference')" />
|
||||||
v-model="data.reference"
|
|
||||||
:label="t('entry.basicData.reference')"
|
|
||||||
/>
|
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInput
|
<VnInput
|
||||||
v-model="data.invoiceNumber"
|
v-model="data.invoiceNumber"
|
||||||
:label="t('entry.basicData.invoiceNumber')"
|
:label="t('entry.summary.invoiceNumber')"
|
||||||
/>
|
/>
|
||||||
<VnSelect
|
<VnSelect
|
||||||
:label="t('entry.basicData.company')"
|
:label="t('globals.company')"
|
||||||
v-model="data.companyFk"
|
v-model="data.companyFk"
|
||||||
:options="companiesOptions"
|
:options="companiesOptions"
|
||||||
option-value="id"
|
option-value="id"
|
||||||
|
@ -131,14 +127,14 @@ const onFilterTravelSelected = (formData, id) => {
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnSelect
|
<VnSelect
|
||||||
:label="t('entry.basicData.currency')"
|
:label="t('entry.summary.currency')"
|
||||||
v-model="data.currencyFk"
|
v-model="data.currencyFk"
|
||||||
:options="currenciesOptions"
|
:options="currenciesOptions"
|
||||||
option-value="id"
|
option-value="id"
|
||||||
option-label="code"
|
option-label="code"
|
||||||
/>
|
/>
|
||||||
<QInput
|
<QInput
|
||||||
:label="t('entry.basicData.commission')"
|
:label="t('entry.summary.commission')"
|
||||||
v-model="data.commission"
|
v-model="data.commission"
|
||||||
type="number"
|
type="number"
|
||||||
autofocus
|
autofocus
|
||||||
|
@ -156,17 +152,11 @@ const onFilterTravelSelected = (formData, id) => {
|
||||||
/>
|
/>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<QCheckbox
|
<QCheckbox v-model="data.isOrdered" :label="t('entry.summary.ordered')" />
|
||||||
v-model="data.isOrdered"
|
<QCheckbox v-model="data.isConfirmed" :label="t('globals.confirmed')" />
|
||||||
:label="t('entry.basicData.ordered')"
|
|
||||||
/>
|
|
||||||
<QCheckbox
|
|
||||||
v-model="data.isConfirmed"
|
|
||||||
:label="t('entry.basicData.confirmed')"
|
|
||||||
/>
|
|
||||||
<QCheckbox
|
<QCheckbox
|
||||||
v-model="data.isExcludedFromAvailable"
|
v-model="data.isExcludedFromAvailable"
|
||||||
:label="t('entry.basicData.excludedFromAvailable')"
|
:label="t('entry.summary.excludedFromAvailable')"
|
||||||
/>
|
/>
|
||||||
<QCheckbox
|
<QCheckbox
|
||||||
v-if="isAdministrative()"
|
v-if="isAdministrative()"
|
||||||
|
|
|
@ -5,7 +5,6 @@ import { useI18n } from 'vue-i18n';
|
||||||
import { QBtn } from 'quasar';
|
import { QBtn } from 'quasar';
|
||||||
|
|
||||||
import VnPaginate from 'src/components/ui/VnPaginate.vue';
|
import VnPaginate from 'src/components/ui/VnPaginate.vue';
|
||||||
import FetchData from 'src/components/FetchData.vue';
|
|
||||||
import VnSelect from 'components/common/VnSelect.vue';
|
import VnSelect from 'components/common/VnSelect.vue';
|
||||||
import VnInput from 'src/components/common/VnInput.vue';
|
import VnInput from 'src/components/common/VnInput.vue';
|
||||||
import FetchedTags from 'components/ui/FetchedTags.vue';
|
import FetchedTags from 'components/ui/FetchedTags.vue';
|
||||||
|
@ -157,13 +156,13 @@ const tableColumnComponents = computed(() => ({
|
||||||
const entriesTableColumns = computed(() => {
|
const entriesTableColumns = computed(() => {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
label: t('entry.summary.item'),
|
label: t('globals.item'),
|
||||||
field: 'itemFk',
|
field: 'itemFk',
|
||||||
name: 'item',
|
name: 'item',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('entry.summary.quantity'),
|
label: t('globals.quantity'),
|
||||||
field: 'quantity',
|
field: 'quantity',
|
||||||
name: 'quantity',
|
name: 'quantity',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -187,7 +186,7 @@ const entriesTableColumns = computed(() => {
|
||||||
align: 'left',
|
align: 'left',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('entry.summary.weight'),
|
label: t('globals.weight'),
|
||||||
field: 'weight',
|
field: 'weight',
|
||||||
name: 'weight',
|
name: 'weight',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -212,13 +211,13 @@ const entriesTableColumns = computed(() => {
|
||||||
format: (value) => toCurrency(value),
|
format: (value) => toCurrency(value),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('entry.buys.groupingPrice'),
|
label: t('item.fixedPrice.groupingPrice'),
|
||||||
field: 'price2',
|
field: 'price2',
|
||||||
name: 'price2',
|
name: 'price2',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('entry.buys.packingPrice'),
|
label: t('item.fixedPrice.packingPrice'),
|
||||||
field: 'price3',
|
field: 'price3',
|
||||||
name: 'price3',
|
name: 'price3',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
|
|
@ -35,7 +35,7 @@ const packagingsOptions = ref([]);
|
||||||
|
|
||||||
const columns = computed(() => [
|
const columns = computed(() => [
|
||||||
{
|
{
|
||||||
label: t('entry.buys.item'),
|
label: t('globals.item'),
|
||||||
name: 'item',
|
name: 'item',
|
||||||
field: 'itemFk',
|
field: 'itemFk',
|
||||||
options: lastItemBuysOptions.value,
|
options: lastItemBuysOptions.value,
|
||||||
|
@ -56,19 +56,19 @@ const columns = computed(() => [
|
||||||
align: 'left',
|
align: 'left',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('entry.buys.packing'),
|
label: t('entry.summary.packing'),
|
||||||
name: 'packing',
|
name: 'packing',
|
||||||
field: 'packing',
|
field: 'packing',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('entry.buys.grouping'),
|
label: t('entry.summary.grouping'),
|
||||||
name: 'grouping',
|
name: 'grouping',
|
||||||
field: 'grouping',
|
field: 'grouping',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('entry.buys.buyingValue'),
|
label: t('entry.summary.buyingValue'),
|
||||||
name: 'buyingValue',
|
name: 'buyingValue',
|
||||||
field: 'buyingValue',
|
field: 'buyingValue',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -200,7 +200,7 @@ const redirectToBuysView = () => {
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<QFile
|
<QFile
|
||||||
ref="inputFileRef"
|
ref="inputFileRef"
|
||||||
:label="t('entry.buys.file')"
|
:label="t('globals.file')"
|
||||||
v-model="importData.file"
|
v-model="importData.file"
|
||||||
:multiple="false"
|
:multiple="false"
|
||||||
accept=".json"
|
accept=".json"
|
||||||
|
@ -220,10 +220,7 @@ const redirectToBuysView = () => {
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<div v-if="importData.file">
|
<div v-if="importData.file">
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInput
|
<VnInput :label="t('globals.reference')" v-model="importData.ref" />
|
||||||
:label="t('entry.buys.reference')"
|
|
||||||
v-model="importData.ref"
|
|
||||||
/>
|
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInput
|
<VnInput
|
||||||
|
|
|
@ -2,11 +2,13 @@
|
||||||
import VnCard from 'components/common/VnCard.vue';
|
import VnCard from 'components/common/VnCard.vue';
|
||||||
import EntryDescriptor from './EntryDescriptor.vue';
|
import EntryDescriptor from './EntryDescriptor.vue';
|
||||||
import EntryFilter from '../EntryFilter.vue';
|
import EntryFilter from '../EntryFilter.vue';
|
||||||
|
import filter from './EntryFilter.js';
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<VnCard
|
<VnCard
|
||||||
data-key="Entry"
|
data-key="Entry"
|
||||||
base-url="Entries"
|
base-url="Entries"
|
||||||
|
:filter="filter"
|
||||||
:descriptor="EntryDescriptor"
|
:descriptor="EntryDescriptor"
|
||||||
:filter-panel="EntryFilter"
|
:filter-panel="EntryFilter"
|
||||||
search-data-key="EntryList"
|
search-data-key="EntryList"
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, computed, watch, onMounted } from 'vue';
|
import { ref, computed, onMounted } from 'vue';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
import CardDescriptor from 'components/ui/CardDescriptor.vue';
|
import CardDescriptor from 'components/ui/CardDescriptor.vue';
|
||||||
import VnLv from 'src/components/ui/VnLv.vue';
|
import VnLv from 'src/components/ui/VnLv.vue';
|
||||||
import useCardDescription from 'src/composables/useCardDescription';
|
|
||||||
|
|
||||||
import { toDate } from 'src/filters';
|
import { toDate } from 'src/filters';
|
||||||
import { usePrintService } from 'composables/usePrintService';
|
import { usePrintService } from 'composables/usePrintService';
|
||||||
import { getUrl } from 'src/composables/getUrl';
|
import { getUrl } from 'src/composables/getUrl';
|
||||||
|
import filter from './EntryFilter.js';
|
||||||
|
|
||||||
const $props = defineProps({
|
const $props = defineProps({
|
||||||
id: {
|
id: {
|
||||||
|
@ -25,50 +25,6 @@ const { openReport } = usePrintService();
|
||||||
const entryDescriptorRef = ref(null);
|
const entryDescriptorRef = ref(null);
|
||||||
const url = ref();
|
const url = ref();
|
||||||
|
|
||||||
const entryFilter = {
|
|
||||||
include: [
|
|
||||||
{
|
|
||||||
relation: 'travel',
|
|
||||||
scope: {
|
|
||||||
fields: [
|
|
||||||
'id',
|
|
||||||
'landed',
|
|
||||||
'shipped',
|
|
||||||
'agencyModeFk',
|
|
||||||
'warehouseOutFk',
|
|
||||||
'daysInForward',
|
|
||||||
],
|
|
||||||
include: [
|
|
||||||
{
|
|
||||||
relation: 'agency',
|
|
||||||
scope: {
|
|
||||||
fields: ['name'],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
relation: 'warehouseOut',
|
|
||||||
scope: {
|
|
||||||
fields: ['name'],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
relation: 'warehouseIn',
|
|
||||||
scope: {
|
|
||||||
fields: ['name'],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
relation: 'supplier',
|
|
||||||
scope: {
|
|
||||||
fields: ['id', 'nickname'],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
|
|
||||||
const entityId = computed(() => {
|
const entityId = computed(() => {
|
||||||
return $props.id || route.params.id;
|
return $props.id || route.params.id;
|
||||||
});
|
});
|
||||||
|
@ -76,10 +32,6 @@ onMounted(async () => {
|
||||||
url.value = await getUrl('');
|
url.value = await getUrl('');
|
||||||
});
|
});
|
||||||
|
|
||||||
const data = ref(useCardDescription());
|
|
||||||
const setData = (entity) =>
|
|
||||||
(data.value = useCardDescription(entity.supplier?.nickname, entity.id));
|
|
||||||
|
|
||||||
const getEntryRedirectionFilter = (entry) => {
|
const getEntryRedirectionFilter = (entry) => {
|
||||||
let entryTravel = entry && entry.travel;
|
let entryTravel = entry && entry.travel;
|
||||||
|
|
||||||
|
@ -104,8 +56,6 @@ const getEntryRedirectionFilter = (entry) => {
|
||||||
const showEntryReport = () => {
|
const showEntryReport = () => {
|
||||||
openReport(`Entries/${route.params.id}/entry-order-pdf`);
|
openReport(`Entries/${route.params.id}/entry-order-pdf`);
|
||||||
};
|
};
|
||||||
|
|
||||||
watch;
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -113,11 +63,9 @@ watch;
|
||||||
ref="entryDescriptorRef"
|
ref="entryDescriptorRef"
|
||||||
module="Entry"
|
module="Entry"
|
||||||
:url="`Entries/${entityId}`"
|
:url="`Entries/${entityId}`"
|
||||||
:filter="entryFilter"
|
:filter="filter"
|
||||||
:title="data.title"
|
title="supplier.nickname"
|
||||||
:subtitle="data.subtitle"
|
data-key="Entry"
|
||||||
@on-fetch="setData"
|
|
||||||
data-key="entry"
|
|
||||||
>
|
>
|
||||||
<template #menu="{ entity }">
|
<template #menu="{ entity }">
|
||||||
<QItem v-ripple clickable @click="showEntryReport(entity)">
|
<QItem v-ripple clickable @click="showEntryReport(entity)">
|
||||||
|
@ -125,14 +73,11 @@ watch;
|
||||||
</QItem>
|
</QItem>
|
||||||
</template>
|
</template>
|
||||||
<template #body="{ entity }">
|
<template #body="{ entity }">
|
||||||
<VnLv
|
<VnLv :label="t('globals.agency')" :value="entity.travel?.agency?.name" />
|
||||||
:label="t('entry.descriptor.agency')"
|
|
||||||
:value="entity.travel?.agency?.name"
|
|
||||||
/>
|
|
||||||
<VnLv :label="t('shipped')" :value="toDate(entity.travel?.shipped)" />
|
<VnLv :label="t('shipped')" :value="toDate(entity.travel?.shipped)" />
|
||||||
<VnLv :label="t('landed')" :value="toDate(entity.travel?.landed)" />
|
<VnLv :label="t('landed')" :value="toDate(entity.travel?.landed)" />
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('entry.descriptor.warehouseOut')"
|
:label="t('globals.warehouseOut')"
|
||||||
:value="entity.travel?.warehouseOut?.name"
|
:value="entity.travel?.warehouseOut?.name"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
@ -165,7 +110,7 @@ watch;
|
||||||
<template #actions="{ entity }">
|
<template #actions="{ entity }">
|
||||||
<QCardActions>
|
<QCardActions>
|
||||||
<QBtn
|
<QBtn
|
||||||
:to="`/supplier/${entity.supplier.id}`"
|
:to="`/supplier/${entity.supplier?.id}`"
|
||||||
size="md"
|
size="md"
|
||||||
icon="vn:supplier"
|
icon="vn:supplier"
|
||||||
color="primary"
|
color="primary"
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
export default {
|
||||||
|
include: [
|
||||||
|
{
|
||||||
|
relation: 'travel',
|
||||||
|
scope: {
|
||||||
|
fields: [
|
||||||
|
'id',
|
||||||
|
'landed',
|
||||||
|
'shipped',
|
||||||
|
'agencyModeFk',
|
||||||
|
'warehouseOutFk',
|
||||||
|
'daysInForward',
|
||||||
|
],
|
||||||
|
include: [
|
||||||
|
{
|
||||||
|
relation: 'agency',
|
||||||
|
scope: {
|
||||||
|
fields: ['name'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
relation: 'warehouseOut',
|
||||||
|
scope: {
|
||||||
|
fields: ['name'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
relation: 'warehouseIn',
|
||||||
|
scope: {
|
||||||
|
fields: ['name'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
relation: 'supplier',
|
||||||
|
scope: {
|
||||||
|
fields: ['id', 'nickname'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
|
@ -84,7 +84,7 @@ const tableColumnComponents = {
|
||||||
const entriesTableColumns = computed(() => {
|
const entriesTableColumns = computed(() => {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
label: t('entry.summary.quantity'),
|
label: t('globals.quantity'),
|
||||||
field: 'quantity',
|
field: 'quantity',
|
||||||
name: 'quantity',
|
name: 'quantity',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -102,7 +102,7 @@ const entriesTableColumns = computed(() => {
|
||||||
align: 'left',
|
align: 'left',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('entry.summary.weight'),
|
label: t('globals.weight'),
|
||||||
field: 'weight',
|
field: 'weight',
|
||||||
name: 'weight',
|
name: 'weight',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -188,8 +188,8 @@ const fetchEntryBuys = async () => {
|
||||||
:label="t('entry.summary.currency')"
|
:label="t('entry.summary.currency')"
|
||||||
:value="entry.currency?.name"
|
:value="entry.currency?.name"
|
||||||
/>
|
/>
|
||||||
<VnLv :label="t('entry.summary.company')" :value="entry.company.code" />
|
<VnLv :label="t('globals.company')" :value="entry.company.code" />
|
||||||
<VnLv :label="t('entry.summary.reference')" :value="entry.reference" />
|
<VnLv :label="t('globals.reference')" :value="entry.reference" />
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('entry.summary.invoiceNumber')"
|
:label="t('entry.summary.invoiceNumber')"
|
||||||
:value="entry.invoiceNumber"
|
:value="entry.invoiceNumber"
|
||||||
|
@ -217,7 +217,7 @@ const fetchEntryBuys = async () => {
|
||||||
/>
|
/>
|
||||||
<VnLv :label="t('shipped')" :value="toDate(entry.travel.shipped)" />
|
<VnLv :label="t('shipped')" :value="toDate(entry.travel.shipped)" />
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('entry.summary.travelWarehouseOut')"
|
:label="t('globals.warehouseOut')"
|
||||||
:value="entry.travel.warehouseOut?.name"
|
:value="entry.travel.warehouseOut?.name"
|
||||||
/>
|
/>
|
||||||
<QCheckbox
|
<QCheckbox
|
||||||
|
@ -227,7 +227,7 @@ const fetchEntryBuys = async () => {
|
||||||
/>
|
/>
|
||||||
<VnLv :label="t('landed')" :value="toDate(entry.travel.landed)" />
|
<VnLv :label="t('landed')" :value="toDate(entry.travel.landed)" />
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('entry.summary.travelWarehouseIn')"
|
:label="t('globals.warehouseIn')"
|
||||||
:value="entry.travel.warehouseIn?.name"
|
:value="entry.travel.warehouseIn?.name"
|
||||||
/>
|
/>
|
||||||
<QCheckbox
|
<QCheckbox
|
||||||
|
@ -250,7 +250,7 @@ const fetchEntryBuys = async () => {
|
||||||
:disable="true"
|
:disable="true"
|
||||||
/>
|
/>
|
||||||
<QCheckbox
|
<QCheckbox
|
||||||
:label="t('entry.summary.confirmed')"
|
:label="t('globals.confirmed')"
|
||||||
v-model="entry.isConfirmed"
|
v-model="entry.isConfirmed"
|
||||||
:disable="true"
|
:disable="true"
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -35,7 +35,7 @@ const entriesTableColumns = computed(() => [
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
name: 'item',
|
name: 'item',
|
||||||
label: t('entry.summary.item'),
|
label: t('globals.item'),
|
||||||
field: (row) => row.item.name,
|
field: (row) => row.item.name,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -40,7 +40,7 @@ const columns = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('entry.latestBuys.tableVisibleColumns.packing'),
|
label: t('entry.summary.packing'),
|
||||||
name: 'packing',
|
name: 'packing',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
component: 'number',
|
component: 'number',
|
||||||
|
@ -49,7 +49,7 @@ const columns = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('entry.latestBuys.tableVisibleColumns.grouping'),
|
label: t('entry.summary.grouping'),
|
||||||
name: 'grouping',
|
name: 'grouping',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
component: 'number',
|
component: 'number',
|
||||||
|
@ -58,7 +58,7 @@ const columns = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('entry.latestBuys.tableVisibleColumns.quantity'),
|
label: t('globals.quantity'),
|
||||||
name: 'quantity',
|
name: 'quantity',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
component: 'number',
|
component: 'number',
|
||||||
|
@ -67,12 +67,12 @@ const columns = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('entry.latestBuys.tableVisibleColumns.description'),
|
label: t('globals.description'),
|
||||||
name: 'description',
|
name: 'description',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('entry.latestBuys.tableVisibleColumns.size'),
|
label: t('globals.size'),
|
||||||
name: 'size',
|
name: 'size',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
component: 'number',
|
component: 'number',
|
||||||
|
@ -81,27 +81,27 @@ const columns = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('entry.latestBuys.tableVisibleColumns.tags'),
|
label: t('globals.tags'),
|
||||||
name: 'tags',
|
name: 'tags',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('entry.latestBuys.tableVisibleColumns.type'),
|
label: t('globals.type'),
|
||||||
name: 'type',
|
name: 'type',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('entry.latestBuys.tableVisibleColumns.intrastat'),
|
label: t('globals.intrastat'),
|
||||||
name: 'intrastat',
|
name: 'intrastat',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('entry.latestBuys.tableVisibleColumns.origin'),
|
label: t('globals.origin'),
|
||||||
name: 'origin',
|
name: 'origin',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('entry.latestBuys.tableVisibleColumns.weightByPiece'),
|
label: t('globals.weightByPiece'),
|
||||||
name: 'weightByPiece',
|
name: 'weightByPiece',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
component: 'number',
|
component: 'number',
|
||||||
|
@ -129,7 +129,7 @@ const columns = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('entry.latestBuys.tableVisibleColumns.buyingValue'),
|
label: t('entry.summary.buyingValue'),
|
||||||
name: 'buyingValue',
|
name: 'buyingValue',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
component: 'number',
|
component: 'number',
|
||||||
|
@ -156,7 +156,7 @@ const columns = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('entry.latestBuys.tableVisibleColumns.packageValue'),
|
label: t('entry.buys.packageValue'),
|
||||||
name: 'packageValue',
|
name: 'packageValue',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
component: 'number',
|
component: 'number',
|
||||||
|
@ -202,7 +202,7 @@ const columns = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('entry.latestBuys.tableVisibleColumns.weight'),
|
label: t('globals.weight'),
|
||||||
name: 'weight',
|
name: 'weight',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
component: 'number',
|
component: 'number',
|
||||||
|
@ -211,7 +211,7 @@ const columns = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('entry.latestBuys.tableVisibleColumns.packagingFk'),
|
label: t('entry.buys.packagingFk'),
|
||||||
name: 'packagingFk',
|
name: 'packagingFk',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
component: 'number',
|
component: 'number',
|
||||||
|
|
|
@ -47,14 +47,14 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('entry.list.tableVisibleColumns.id'),
|
label: t('globals.id'),
|
||||||
name: 'id',
|
name: 'id',
|
||||||
isTitle: true,
|
isTitle: true,
|
||||||
cardVisible: true,
|
cardVisible: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('entry.list.tableVisibleColumns.reference'),
|
label: t('globals.reference'),
|
||||||
name: 'reference',
|
name: 'reference',
|
||||||
isTitle: true,
|
isTitle: true,
|
||||||
component: 'input',
|
component: 'input',
|
||||||
|
|
|
@ -99,7 +99,7 @@ const travelDialogRef = ref(false);
|
||||||
const tableRef = ref();
|
const tableRef = ref();
|
||||||
const travel = ref(null);
|
const travel = ref(null);
|
||||||
const userParams = ref({
|
const userParams = ref({
|
||||||
dated: Date.vnNew(),
|
dated: Date.vnNew().toJSON(),
|
||||||
});
|
});
|
||||||
|
|
||||||
const filter = ref({
|
const filter = ref({
|
||||||
|
@ -219,6 +219,7 @@ function round(value) {
|
||||||
data-key="StockBoughts"
|
data-key="StockBoughts"
|
||||||
url="StockBoughts/getStockBought"
|
url="StockBoughts/getStockBought"
|
||||||
save-url="StockBoughts/crud"
|
save-url="StockBoughts/crud"
|
||||||
|
search-url="StockBoughts"
|
||||||
order="reserve DESC"
|
order="reserve DESC"
|
||||||
:right-search="false"
|
:right-search="false"
|
||||||
:is-editable="true"
|
:is-editable="true"
|
||||||
|
@ -281,6 +282,7 @@ function round(value) {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
min-width: 35%;
|
||||||
}
|
}
|
||||||
.text-negative {
|
.text-negative {
|
||||||
color: $negative !important;
|
color: $negative !important;
|
||||||
|
@ -297,5 +299,5 @@ function round(value) {
|
||||||
Date: Fecha
|
Date: Fecha
|
||||||
View more details: Ver más detalles
|
View more details: Ver más detalles
|
||||||
Reserve some space: Reservar espacio
|
Reserve some space: Reservar espacio
|
||||||
This buyer has already made a reservation for this date: Este comprador ya ha hecho una reserva para esta fecha
|
This buyer has already made a reservation for this date: Este comprador ya ha hecho una reserva para esta fecha
|
||||||
</i18n>
|
</i18n>
|
||||||
|
|
|
@ -18,7 +18,7 @@ const $props = defineProps({
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const customUrl = `StockBoughts/getStockBoughtDetail?workerFk=${$props.workerFk}&date=${$props.dated}`;
|
const customUrl = `StockBoughts/getStockBoughtDetail?workerFk=${$props.workerFk}&dated=${$props.dated}`;
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
|
|
@ -27,7 +27,7 @@ onMounted(async () => {
|
||||||
<VnFilterPanel
|
<VnFilterPanel
|
||||||
:data-key="props.dataKey"
|
:data-key="props.dataKey"
|
||||||
:search-button="true"
|
:search-button="true"
|
||||||
search-url="table"
|
search-url="StockBoughts"
|
||||||
@set-user-params="setUserParams"
|
@set-user-params="setUserParams"
|
||||||
>
|
>
|
||||||
<template #tags="{ tag, formatFn }">
|
<template #tags="{ tag, formatFn }">
|
||||||
|
@ -36,12 +36,19 @@ onMounted(async () => {
|
||||||
<span>{{ formatFn(tag.value) }}</span>
|
<span>{{ formatFn(tag.value) }}</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #body="{ params }">
|
<template #body="{ params, searchFn }">
|
||||||
<QItem class="q-my-sm">
|
<QItem class="q-my-sm">
|
||||||
<QItemSection>
|
<QItemSection>
|
||||||
<VnInputDate
|
<VnInputDate
|
||||||
id="date"
|
id="date"
|
||||||
v-model="params.dated"
|
v-model="params.dated"
|
||||||
|
@update:model-value="
|
||||||
|
(value) => {
|
||||||
|
params.dated = value;
|
||||||
|
setUserParams(params);
|
||||||
|
searchFn();
|
||||||
|
}
|
||||||
|
"
|
||||||
:label="t('Date')"
|
:label="t('Date')"
|
||||||
is-outlined
|
is-outlined
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -355,10 +355,10 @@ const createInvoiceInCorrection = async () => {
|
||||||
</QItem>
|
</QItem>
|
||||||
</template>
|
</template>
|
||||||
<template #body="{ entity }">
|
<template #body="{ entity }">
|
||||||
<VnLv :label="t('invoiceIn.card.issued')" :value="toDate(entity.issued)" />
|
<VnLv :label="t('invoiceIn.list.issued')" :value="toDate(entity.issued)" />
|
||||||
<VnLv :label="t('invoiceIn.summary.booked')" :value="toDate(entity.booked)" />
|
<VnLv :label="t('invoiceIn.summary.booked')" :value="toDate(entity.booked)" />
|
||||||
<VnLv :label="t('invoiceIn.card.amount')" :value="toCurrency(totalAmount)" />
|
<VnLv :label="t('invoiceIn.list.amount')" :value="toCurrency(totalAmount)" />
|
||||||
<VnLv :label="t('invoiceIn.summary.supplier')">
|
<VnLv :label="t('invoiceIn.list.supplier')">
|
||||||
<template #value>
|
<template #value>
|
||||||
<span class="link">
|
<span class="link">
|
||||||
{{ entity?.supplier?.nickname }}
|
{{ entity?.supplier?.nickname }}
|
||||||
|
|
|
@ -95,7 +95,7 @@ const dueDayColumns = ref([
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'amount',
|
name: 'amount',
|
||||||
label: 'invoiceIn.summary.amount',
|
label: 'invoiceIn.list.amount',
|
||||||
field: (row) => row.amount,
|
field: (row) => row.amount,
|
||||||
format: (value) => toCurrency(value),
|
format: (value) => toCurrency(value),
|
||||||
sortable: true,
|
sortable: true,
|
||||||
|
@ -123,7 +123,7 @@ const intrastatColumns = ref([
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'amount',
|
name: 'amount',
|
||||||
label: 'invoiceIn.summary.amount',
|
label: 'invoiceIn.list.amount',
|
||||||
field: (row) => toCurrency(row.amount),
|
field: (row) => toCurrency(row.amount),
|
||||||
sortable: true,
|
sortable: true,
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -210,7 +210,7 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
|
||||||
/>
|
/>
|
||||||
</QCardSection>
|
</QCardSection>
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('invoiceIn.summary.supplier')"
|
:label="t('invoiceIn.list.supplier')"
|
||||||
:value="entity.supplier?.name"
|
:value="entity.supplier?.name"
|
||||||
>
|
>
|
||||||
<template #value>
|
<template #value>
|
||||||
|
@ -221,7 +221,7 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
|
||||||
</template>
|
</template>
|
||||||
</VnLv>
|
</VnLv>
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('invoiceIn.summary.supplierRef')"
|
:label="t('invoiceIn.list.supplierRef')"
|
||||||
:value="entity.supplierRef"
|
:value="entity.supplierRef"
|
||||||
/>
|
/>
|
||||||
<VnLv
|
<VnLv
|
||||||
|
@ -271,7 +271,7 @@ const getLink = (param) => `#/invoice-in/${entityId.value}/${param}`;
|
||||||
:value="entity.expenseDeductible?.name"
|
:value="entity.expenseDeductible?.name"
|
||||||
/>
|
/>
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('invoiceIn.summary.company')"
|
:label="t('invoiceIn.card.company')"
|
||||||
:value="entity.company?.code"
|
:value="entity.company?.code"
|
||||||
/>
|
/>
|
||||||
<VnLv :label="t('invoiceIn.isBooked')" :value="invoiceIn?.isBooked" />
|
<VnLv :label="t('invoiceIn.isBooked')" :value="invoiceIn?.isBooked" />
|
||||||
|
|
|
@ -83,7 +83,7 @@ const redirectToInvoiceInBasicData = (__, { id }) => {
|
||||||
</template>
|
</template>
|
||||||
</VnSelect>
|
</VnSelect>
|
||||||
<VnInput
|
<VnInput
|
||||||
:label="t('invoiceIn.summary.supplierRef')"
|
:label="t('invoiceIn.list.supplierRef')"
|
||||||
v-model="data.supplierRef"
|
v-model="data.supplierRef"
|
||||||
/>
|
/>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
|
|
|
@ -50,7 +50,7 @@ const cols = computed(() => [
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
name: 'serial',
|
name: 'serial',
|
||||||
label: t('invoiceIn.list.serial'),
|
label: t('invoiceIn.serial'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -151,7 +151,7 @@ const cols = computed(() => [
|
||||||
</template>
|
</template>
|
||||||
</VnSelect>
|
</VnSelect>
|
||||||
<VnInput
|
<VnInput
|
||||||
:label="t('invoiceIn.summary.supplierRef')"
|
:label="t('invoiceIn.list.supplierRef')"
|
||||||
v-model="data.supplierRef"
|
v-model="data.supplierRef"
|
||||||
/>
|
/>
|
||||||
<VnSelect
|
<VnSelect
|
||||||
|
|
|
@ -5,14 +5,11 @@ invoiceIn:
|
||||||
ref: Reference
|
ref: Reference
|
||||||
supplier: Supplier
|
supplier: Supplier
|
||||||
supplierRef: Supplier ref.
|
supplierRef: Supplier ref.
|
||||||
serial: Serial
|
|
||||||
file: File
|
file: File
|
||||||
issued: Issued
|
issued: Issued
|
||||||
awb: AWB
|
awb: AWB
|
||||||
amount: Amount
|
amount: Amount
|
||||||
card:
|
card:
|
||||||
issued: Issued
|
|
||||||
amount: Amount
|
|
||||||
client: Client
|
client: Client
|
||||||
company: Company
|
company: Company
|
||||||
customerCard: Customer card
|
customerCard: Customer card
|
||||||
|
@ -21,8 +18,6 @@ invoiceIn:
|
||||||
dueDay: Due day
|
dueDay: Due day
|
||||||
intrastat: Intrastat
|
intrastat: Intrastat
|
||||||
summary:
|
summary:
|
||||||
supplier: Supplier
|
|
||||||
supplierRef: Supplier ref.
|
|
||||||
currency: Currency
|
currency: Currency
|
||||||
issued: Expedition date
|
issued: Expedition date
|
||||||
operated: Operation date
|
operated: Operation date
|
||||||
|
@ -30,7 +25,6 @@ invoiceIn:
|
||||||
bookedDate: Booked date
|
bookedDate: Booked date
|
||||||
sage: Sage withholding
|
sage: Sage withholding
|
||||||
vat: Undeductible VAT
|
vat: Undeductible VAT
|
||||||
company: Company
|
|
||||||
expense: Expense
|
expense: Expense
|
||||||
taxableBase: Taxable base
|
taxableBase: Taxable base
|
||||||
rate: Rate
|
rate: Rate
|
||||||
|
@ -38,7 +32,6 @@ invoiceIn:
|
||||||
sageTransaction: Sage transaction
|
sageTransaction: Sage transaction
|
||||||
dueDay: Date
|
dueDay: Date
|
||||||
bank: Bank
|
bank: Bank
|
||||||
amount: Amount
|
|
||||||
foreignValue: Foreign value
|
foreignValue: Foreign value
|
||||||
dueTotal: Due day
|
dueTotal: Due day
|
||||||
noMatch: Do not match
|
noMatch: Do not match
|
||||||
|
|
|
@ -11,8 +11,6 @@ invoiceIn:
|
||||||
awb: AWB
|
awb: AWB
|
||||||
amount: Importe
|
amount: Importe
|
||||||
card:
|
card:
|
||||||
issued: Fecha emisión
|
|
||||||
amount: Importe
|
|
||||||
client: Cliente
|
client: Cliente
|
||||||
company: Empresa
|
company: Empresa
|
||||||
customerCard: Ficha del cliente
|
customerCard: Ficha del cliente
|
||||||
|
@ -20,8 +18,6 @@ invoiceIn:
|
||||||
vat: Iva
|
vat: Iva
|
||||||
dueDay: Fecha de vencimiento
|
dueDay: Fecha de vencimiento
|
||||||
summary:
|
summary:
|
||||||
supplier: Proveedor
|
|
||||||
supplierRef: Ref. proveedor
|
|
||||||
currency: Divisa
|
currency: Divisa
|
||||||
docNumber: Número documento
|
docNumber: Número documento
|
||||||
issued: Fecha de expedición
|
issued: Fecha de expedición
|
||||||
|
@ -30,14 +26,12 @@ invoiceIn:
|
||||||
bookedDate: Fecha contable
|
bookedDate: Fecha contable
|
||||||
sage: Retención sage
|
sage: Retención sage
|
||||||
vat: Iva no deducible
|
vat: Iva no deducible
|
||||||
company: Empresa
|
|
||||||
expense: Gasto
|
expense: Gasto
|
||||||
taxableBase: Base imp.
|
taxableBase: Base imp.
|
||||||
rate: Tasa
|
rate: Tasa
|
||||||
sageTransaction: Sage transación
|
sageTransaction: Sage transación
|
||||||
dueDay: Fecha
|
dueDay: Fecha
|
||||||
bank: Caja
|
bank: Caja
|
||||||
amount: Importe
|
|
||||||
foreignValue: Divisa
|
foreignValue: Divisa
|
||||||
dueTotal: Vencimiento
|
dueTotal: Vencimiento
|
||||||
code: Código
|
code: Código
|
||||||
|
|
|
@ -69,7 +69,7 @@ const setData = (entity) => (data.value = useCardDescription(entity.ref, entity.
|
||||||
<template #body="{ entity }">
|
<template #body="{ entity }">
|
||||||
<VnLv :label="t('invoiceOut.card.issued')" :value="toDate(entity.issued)" />
|
<VnLv :label="t('invoiceOut.card.issued')" :value="toDate(entity.issued)" />
|
||||||
<VnLv :label="t('globals.amount')" :value="toCurrency(entity.amount)" />
|
<VnLv :label="t('globals.amount')" :value="toCurrency(entity.amount)" />
|
||||||
<VnLv v-if="entity.client" :label="t('invoiceOut.card.client')">
|
<VnLv v-if="entity.client" :label="t('globals.client')">
|
||||||
<template #value>
|
<template #value>
|
||||||
<span class="link">
|
<span class="link">
|
||||||
{{ entity.client.name }}
|
{{ entity.client.name }}
|
||||||
|
@ -79,7 +79,7 @@ const setData = (entity) => (data.value = useCardDescription(entity.ref, entity.
|
||||||
</VnLv>
|
</VnLv>
|
||||||
<VnLv
|
<VnLv
|
||||||
v-if="entity.company"
|
v-if="entity.company"
|
||||||
:label="t('invoiceOut.card.company')"
|
:label="t('globals.company')"
|
||||||
:value="entity.company.code"
|
:value="entity.company.code"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -42,7 +42,7 @@ function fetch() {
|
||||||
const taxColumns = ref([
|
const taxColumns = ref([
|
||||||
{
|
{
|
||||||
name: 'item',
|
name: 'item',
|
||||||
label: 'invoiceOut.summary.type',
|
label: 'globals.type',
|
||||||
field: (row) => row.name,
|
field: (row) => row.name,
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
|
@ -72,21 +72,21 @@ const taxColumns = ref([
|
||||||
const ticketsColumns = ref([
|
const ticketsColumns = ref([
|
||||||
{
|
{
|
||||||
name: 'item',
|
name: 'item',
|
||||||
label: t('invoiceOut.summary.ticketId'),
|
label: t('globals.ticketId'),
|
||||||
field: (row) => row.id,
|
field: (row) => row.id,
|
||||||
sortable: true,
|
sortable: true,
|
||||||
align: 'left',
|
align: 'left',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'nickname',
|
name: 'nickname',
|
||||||
label: t('invoiceOut.summary.nickname'),
|
label: t('globals.alias'),
|
||||||
field: (row) => row.nickname,
|
field: (row) => row.nickname,
|
||||||
sortable: true,
|
sortable: true,
|
||||||
align: 'left',
|
align: 'left',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'landed',
|
name: 'landed',
|
||||||
label: t('invoiceOut.summary.shipped'),
|
label: t('globals.shipped'),
|
||||||
field: (row) => row.shipped,
|
field: (row) => row.shipped,
|
||||||
format: (value) => toDate(value),
|
format: (value) => toDate(value),
|
||||||
sortable: true,
|
sortable: true,
|
||||||
|
@ -124,18 +124,12 @@ const ticketsColumns = ref([
|
||||||
:label="t('invoiceOut.summary.dued')"
|
:label="t('invoiceOut.summary.dued')"
|
||||||
:value="toDate(invoiceOut.dued)"
|
:value="toDate(invoiceOut.dued)"
|
||||||
/>
|
/>
|
||||||
<VnLv
|
<VnLv :label="t('globals.created')" :value="toDate(invoiceOut.created)" />
|
||||||
:label="t('invoiceOut.summary.created')"
|
|
||||||
:value="toDate(invoiceOut.created)"
|
|
||||||
/>
|
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('invoiceOut.summary.booked')"
|
:label="t('invoiceOut.summary.booked')"
|
||||||
:value="toDate(invoiceOut.booked)"
|
:value="toDate(invoiceOut.booked)"
|
||||||
/>
|
/>
|
||||||
<VnLv
|
<VnLv :label="t('globals.company')" :value="invoiceOut.company.code" />
|
||||||
:label="t('invoiceOut.summary.company')"
|
|
||||||
:value="invoiceOut.company.code"
|
|
||||||
/>
|
|
||||||
</QCard>
|
</QCard>
|
||||||
<QCard class="vn-three">
|
<QCard class="vn-three">
|
||||||
<VnTitle :text="t('invoiceOut.summary.taxBreakdown')" />
|
<VnTitle :text="t('invoiceOut.summary.taxBreakdown')" />
|
||||||
|
|
|
@ -59,7 +59,7 @@ const columns = computed(() => [
|
||||||
field: 'clientId',
|
field: 'clientId',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('invoiceOut.globalInvoices.table.client'),
|
label: t('globals.client'),
|
||||||
field: 'clientName',
|
field: 'clientName',
|
||||||
name: 'clientName',
|
name: 'clientName',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
|
|
@ -33,7 +33,7 @@ const props = defineProps({
|
||||||
<QItemSection>
|
<QItemSection>
|
||||||
<VnInputDate
|
<VnInputDate
|
||||||
v-model="params.from"
|
v-model="params.from"
|
||||||
:label="t('invoiceOut.negativeBases.from')"
|
:label="t('globals.from')"
|
||||||
is-outlined
|
is-outlined
|
||||||
/>
|
/>
|
||||||
</QItemSection>
|
</QItemSection>
|
||||||
|
@ -42,7 +42,7 @@ const props = defineProps({
|
||||||
<QItemSection>
|
<QItemSection>
|
||||||
<VnInputDate
|
<VnInputDate
|
||||||
v-model="params.to"
|
v-model="params.to"
|
||||||
:label="t('invoiceOut.negativeBases.to')"
|
:label="t('globals.to')"
|
||||||
is-outlined
|
is-outlined
|
||||||
/>
|
/>
|
||||||
</QItemSection>
|
</QItemSection>
|
||||||
|
@ -51,7 +51,7 @@ const props = defineProps({
|
||||||
<QItemSection>
|
<QItemSection>
|
||||||
<VnInput
|
<VnInput
|
||||||
v-model="params.company"
|
v-model="params.company"
|
||||||
:label="t('invoiceOut.negativeBases.company')"
|
:label="t('globals.company')"
|
||||||
is-outlined
|
is-outlined
|
||||||
/>
|
/>
|
||||||
</QItemSection>
|
</QItemSection>
|
||||||
|
@ -60,7 +60,7 @@ const props = defineProps({
|
||||||
<QItemSection>
|
<QItemSection>
|
||||||
<VnInput
|
<VnInput
|
||||||
v-model="params.country"
|
v-model="params.country"
|
||||||
:label="t('invoiceOut.negativeBases.country')"
|
:label="t('globals.country')"
|
||||||
is-outlined
|
is-outlined
|
||||||
/>
|
/>
|
||||||
</QItemSection>
|
</QItemSection>
|
||||||
|
@ -79,7 +79,7 @@ const props = defineProps({
|
||||||
<QItemSection>
|
<QItemSection>
|
||||||
<VnInput
|
<VnInput
|
||||||
v-model="params.clientSocialName"
|
v-model="params.clientSocialName"
|
||||||
:label="t('invoiceOut.negativeBases.client')"
|
:label="t('globals.client')"
|
||||||
is-outlined
|
is-outlined
|
||||||
/>
|
/>
|
||||||
</QItemSection>
|
</QItemSection>
|
||||||
|
@ -88,7 +88,7 @@ const props = defineProps({
|
||||||
<QItemSection>
|
<QItemSection>
|
||||||
<VnInputNumber
|
<VnInputNumber
|
||||||
v-model="params.amount"
|
v-model="params.amount"
|
||||||
:label="t('invoiceOut.negativeBases.amount')"
|
:label="t('globals.amount')"
|
||||||
is-outlined
|
is-outlined
|
||||||
/>
|
/>
|
||||||
</QItemSection>
|
</QItemSection>
|
||||||
|
|
|
@ -9,9 +9,6 @@ invoiceOutList:
|
||||||
id: ID
|
id: ID
|
||||||
ref: Referencia
|
ref: Referencia
|
||||||
issued: Fecha emisión
|
issued: Fecha emisión
|
||||||
customer: Cliente
|
|
||||||
company: Empresa
|
|
||||||
amount: Importe
|
|
||||||
created: F. creación
|
created: F. creación
|
||||||
dueDate: F. máxima
|
dueDate: F. máxima
|
||||||
invoiceOutSerial: Serial
|
invoiceOutSerial: Serial
|
||||||
|
@ -20,12 +17,12 @@ invoiceOutList:
|
||||||
DownloadPdf: Descargar PDF
|
DownloadPdf: Descargar PDF
|
||||||
InvoiceOutSummary: Resumen
|
InvoiceOutSummary: Resumen
|
||||||
negativeBases:
|
negativeBases:
|
||||||
country: País
|
country: País
|
||||||
clientId: ID del cliente
|
clientId: ID del cliente
|
||||||
client: Cliente
|
client: Cliente
|
||||||
base: Base
|
base: Base
|
||||||
ticketId: Ticket
|
ticketId: Ticket
|
||||||
active: Activo
|
active: Activo
|
||||||
hasToInvoice: Debe facturar
|
hasToInvoice: Debe facturar
|
||||||
verifiedData: Datos verificados
|
verifiedData: Datos verificados
|
||||||
commercial: Comercial
|
commercial: Comercial
|
||||||
|
|
|
@ -42,7 +42,7 @@ onMounted(async () => {
|
||||||
:required="true"
|
:required="true"
|
||||||
/>
|
/>
|
||||||
<VnInput
|
<VnInput
|
||||||
:label="t('createIntrastatForm.description')"
|
:label="t('itemBasicData.description')"
|
||||||
v-model="data.description"
|
v-model="data.description"
|
||||||
:required="true"
|
:required="true"
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -140,10 +140,7 @@ const openRegularizeStockForm = () => {
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</VnLv>
|
</VnLv>
|
||||||
<VnLv
|
<VnLv :label="t('globals.producer')" :value="dashIfEmpty(entity.subName)" />
|
||||||
:label="t('item.descriptor.producer')"
|
|
||||||
:value="dashIfEmpty(entity.subName)"
|
|
||||||
/>
|
|
||||||
<VnLv
|
<VnLv
|
||||||
v-if="entity.value5"
|
v-if="entity.value5"
|
||||||
:label="t('item.descriptor.color')"
|
:label="t('item.descriptor.color')"
|
||||||
|
@ -157,7 +154,7 @@ const openRegularizeStockForm = () => {
|
||||||
/>
|
/>
|
||||||
<VnLv
|
<VnLv
|
||||||
v-if="entity.value7"
|
v-if="entity.value7"
|
||||||
:label="t('item.descriptor.stems')"
|
:label="t('item.list.stems')"
|
||||||
:value="entity.value7"
|
:value="entity.value7"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -75,7 +75,7 @@ const handlePhotoUpdated = (evt = false) => {
|
||||||
<QIcon name="vn:item" />
|
<QIcon name="vn:item" />
|
||||||
</div>
|
</div>
|
||||||
<div class="text-grey-5" style="opacity: 0.4">
|
<div class="text-grey-5" style="opacity: 0.4">
|
||||||
{{ t('item.descriptor.item') }}
|
{{ t('globals.item') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -107,7 +107,7 @@ const handlePhotoUpdated = (evt = false) => {
|
||||||
>
|
>
|
||||||
<div class="col column items-center">
|
<div class="col column items-center">
|
||||||
<span class="text-uppercase color-vn-white" style="font-size: 11px">
|
<span class="text-uppercase color-vn-white" style="font-size: 11px">
|
||||||
{{ t('item.descriptor.visible') }}
|
{{ t('globals.visible') }}
|
||||||
</span>
|
</span>
|
||||||
<span class="text-weight-bold text-h5 color-vn-white">{{ visible }}</span>
|
<span class="text-weight-bold text-h5 color-vn-white">{{ visible }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -90,7 +90,7 @@ const columns = computed(() => [
|
||||||
format: (val) => dashIfEmpty(val),
|
format: (val) => dashIfEmpty(val),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('itemDiary.reference'),
|
label: t('itemBasicData.reference'),
|
||||||
field: 'reference',
|
field: 'reference',
|
||||||
name: 'reference',
|
name: 'reference',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
|
|
@ -59,7 +59,7 @@ const columns = computed(() => [
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('lastEntries.warehouse'),
|
label: t('itemDiary.warehouse'),
|
||||||
name: 'warehouse',
|
name: 'warehouse',
|
||||||
field: 'warehouse',
|
field: 'warehouse',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -94,7 +94,7 @@ const columns = computed(() => [
|
||||||
format: (val) => dashIfEmpty(val),
|
format: (val) => dashIfEmpty(val),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('lastEntries.packing'),
|
label: t('shelvings.packing'),
|
||||||
name: 'packing',
|
name: 'packing',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
|
@ -104,7 +104,7 @@ const columns = computed(() => [
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('lastEntries.stems'),
|
label: t('itemBasicData.stems'),
|
||||||
name: 'stems',
|
name: 'stems',
|
||||||
field: 'stems',
|
field: 'stems',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
|
@ -188,7 +188,7 @@ onUnmounted(() => (stateStore.rightDrawer = false));
|
||||||
<VnSubToolbar>
|
<VnSubToolbar>
|
||||||
<template #st-data>
|
<template #st-data>
|
||||||
<VnInputDate
|
<VnInputDate
|
||||||
:label="t('lastEntries.since')"
|
:label="t('itemDiary.since')"
|
||||||
dense
|
dense
|
||||||
v-model="from"
|
v-model="from"
|
||||||
class="q-mr-lg"
|
class="q-mr-lg"
|
||||||
|
|
|
@ -55,13 +55,13 @@ const getUrl = (id, param) => `#/Item/${id}/${param}`;
|
||||||
<QCard class="vn-one">
|
<QCard class="vn-one">
|
||||||
<VnTitle
|
<VnTitle
|
||||||
:url="getUrl(entityId, 'basic-data')"
|
:url="getUrl(entityId, 'basic-data')"
|
||||||
:text="t('item.summary.basicData')"
|
:text="t('globals.summary.basicData')"
|
||||||
/>
|
/>
|
||||||
<VnLv :label="t('item.summary.name')" :value="item.name" />
|
<VnLv :label="t('globals.name')" :value="item.name" />
|
||||||
<VnLv :label="t('item.summary.completeName')" :value="item.longName" />
|
<VnLv :label="t('item.summary.completeName')" :value="item.longName" />
|
||||||
<VnLv :label="t('item.summary.family')" :value="item.itemType.name" />
|
<VnLv :label="t('item.summary.family')" :value="item.itemType.name" />
|
||||||
<VnLv :label="t('item.summary.size')" :value="item.size" />
|
<VnLv :label="t('globals.size')" :value="item.size" />
|
||||||
<VnLv :label="t('item.summary.origin')" :value="item.origin.name" />
|
<VnLv :label="t('globals.origin')" :value="item.origin.name" />
|
||||||
<VnLv :label="t('item.summary.stems')" :value="item.stems" />
|
<VnLv :label="t('item.summary.stems')" :value="item.stems" />
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('item.summary.multiplier')"
|
:label="t('item.summary.multiplier')"
|
||||||
|
@ -96,7 +96,7 @@ const getUrl = (id, param) => `#/Item/${id}/${param}`;
|
||||||
:value="item.intrastat.id"
|
:value="item.intrastat.id"
|
||||||
/>
|
/>
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('item.summary.intrastat')"
|
:label="t('globals.intrastat')"
|
||||||
:value="item.intrastat.description"
|
:value="item.intrastat.description"
|
||||||
/>
|
/>
|
||||||
<VnLv :label="t('item.summary.ref')" :value="item.comment" />
|
<VnLv :label="t('item.summary.ref')" :value="item.comment" />
|
||||||
|
@ -115,7 +115,7 @@ const getUrl = (id, param) => `#/Item/${id}/${param}`;
|
||||||
/>
|
/>
|
||||||
</QCard>
|
</QCard>
|
||||||
<QCard class="vn-one">
|
<QCard class="vn-one">
|
||||||
<VnTitle :url="getUrl(entityId, 'tags')" :text="t('item.summary.tags')" />
|
<VnTitle :url="getUrl(entityId, 'tags')" :text="t('globals.tags')" />
|
||||||
<VnLv
|
<VnLv
|
||||||
v-for="(tag, index) in tags"
|
v-for="(tag, index) in tags"
|
||||||
:key="index"
|
:key="index"
|
||||||
|
@ -126,7 +126,7 @@ const getUrl = (id, param) => `#/Item/${id}/${param}`;
|
||||||
<QCard class="vn-one" v-if="item.description">
|
<QCard class="vn-one" v-if="item.description">
|
||||||
<VnTitle
|
<VnTitle
|
||||||
:url="getUrl(entityId, 'basic-data')"
|
:url="getUrl(entityId, 'basic-data')"
|
||||||
:text="t('item.summary.description')"
|
:text="t('globals.description')"
|
||||||
/>
|
/>
|
||||||
<p v-text="item.description" />
|
<p v-text="item.description" />
|
||||||
</QCard>
|
</QCard>
|
||||||
|
|
|
@ -151,7 +151,7 @@ const insertTag = (rows) => {
|
||||||
:is-clearable="false"
|
:is-clearable="false"
|
||||||
/>
|
/>
|
||||||
<VnInput
|
<VnInput
|
||||||
:label="t('itemTags.relevancy')"
|
:label="t('itemBasicData.relevancy')"
|
||||||
type="number"
|
type="number"
|
||||||
v-model="row.priority"
|
v-model="row.priority"
|
||||||
:required="true"
|
:required="true"
|
||||||
|
|
|
@ -86,12 +86,9 @@ onBeforeMount(async () => {
|
||||||
>
|
>
|
||||||
<template #form="{ data }">
|
<template #form="{ data }">
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInput
|
<VnInput v-model="data.provisionalName" :label="t('globals.name')" />
|
||||||
v-model="data.provisionalName"
|
|
||||||
:label="t('item.create.name')"
|
|
||||||
/>
|
|
||||||
<VnSelect
|
<VnSelect
|
||||||
:label="t('item.create.tag')"
|
:label="t('globals.tag')"
|
||||||
v-model="data.tag"
|
v-model="data.tag"
|
||||||
:options="tagsOptions"
|
:options="tagsOptions"
|
||||||
option-value="id"
|
option-value="id"
|
||||||
|
@ -109,7 +106,7 @@ onBeforeMount(async () => {
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnSelect
|
<VnSelect
|
||||||
:label="t('item.create.type')"
|
:label="t('globals.type')"
|
||||||
v-model="data.typeFk"
|
v-model="data.typeFk"
|
||||||
:options="itemTypesOptions"
|
:options="itemTypesOptions"
|
||||||
option-label="name"
|
option-label="name"
|
||||||
|
@ -133,7 +130,7 @@ onBeforeMount(async () => {
|
||||||
</template>
|
</template>
|
||||||
</VnSelect>
|
</VnSelect>
|
||||||
<VnSelect
|
<VnSelect
|
||||||
:label="t('item.create.intrastat')"
|
:label="t('globals.intrastat')"
|
||||||
v-model="data.intrastatFk"
|
v-model="data.intrastatFk"
|
||||||
:options="intrastatsOptions"
|
:options="intrastatsOptions"
|
||||||
option-label="description"
|
option-label="description"
|
||||||
|
@ -156,7 +153,7 @@ onBeforeMount(async () => {
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnSelect
|
<VnSelect
|
||||||
:label="t('item.create.origin')"
|
:label="t('globals.origin')"
|
||||||
v-model="data.originFk"
|
v-model="data.originFk"
|
||||||
:options="originsOptions"
|
:options="originsOptions"
|
||||||
option-value="id"
|
option-value="id"
|
||||||
|
|
|
@ -132,7 +132,7 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
label: t('item.fixedPrice.warehouse'),
|
label: t('globals.warehouse'),
|
||||||
field: 'warehouseFk',
|
field: 'warehouseFk',
|
||||||
name: 'warehouseFk',
|
name: 'warehouseFk',
|
||||||
...defaultColumnAttrs,
|
...defaultColumnAttrs,
|
||||||
|
@ -192,7 +192,7 @@ const editTableFieldsOptions = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'warehouseFk',
|
field: 'warehouseFk',
|
||||||
label: t('item.fixedPrice.warehouse'),
|
label: t('globals.warehouse'),
|
||||||
component: 'select',
|
component: 'select',
|
||||||
attrs: {
|
attrs: {
|
||||||
options: [],
|
options: [],
|
||||||
|
|
|
@ -80,7 +80,7 @@ const columns = computed(() => [
|
||||||
cardVisible: true,
|
cardVisible: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('item.list.grouping'),
|
label: t('entry.summary.grouping'),
|
||||||
name: 'grouping',
|
name: 'grouping',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
|
@ -89,7 +89,7 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('item.list.packing'),
|
label: t('entry.summary.packing'),
|
||||||
name: 'packing',
|
name: 'packing',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
|
@ -118,7 +118,7 @@ const columns = computed(() => [
|
||||||
cardVisible: true,
|
cardVisible: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('item.list.size'),
|
label: t('globals.size'),
|
||||||
name: 'size',
|
name: 'size',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
|
@ -165,7 +165,7 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('item.list.intrastat'),
|
label: t('globals.intrastat'),
|
||||||
name: 'intrastat',
|
name: 'intrastat',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
component: 'select',
|
component: 'select',
|
||||||
|
@ -184,7 +184,7 @@ const columns = computed(() => [
|
||||||
cardVisible: true,
|
cardVisible: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('item.list.origin'),
|
label: t('globals.origin'),
|
||||||
name: 'origin',
|
name: 'origin',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
component: 'select',
|
component: 'select',
|
||||||
|
@ -258,7 +258,7 @@ const columns = computed(() => [
|
||||||
component: 'checkbox',
|
component: 'checkbox',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('item.list.producer'),
|
label: t('globals.producer'),
|
||||||
name: 'producer',
|
name: 'producer',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
component: 'select',
|
component: 'select',
|
||||||
|
@ -275,7 +275,7 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('item.list.landed'),
|
label: t('globals.landed'),
|
||||||
name: 'landed',
|
name: 'landed',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
component: 'date',
|
component: 'date',
|
||||||
|
|
|
@ -40,7 +40,7 @@ watch(
|
||||||
|
|
||||||
const columns = computed(() => [
|
const columns = computed(() => [
|
||||||
{
|
{
|
||||||
label: t('item.buyRequest.ticketId'),
|
label: t('globals.ticketId'),
|
||||||
name: 'ticketFk',
|
name: 'ticketFk',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
isId: true,
|
isId: true,
|
||||||
|
@ -50,7 +50,7 @@ const columns = computed(() => [
|
||||||
cardVisible: true,
|
cardVisible: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('item.buyRequest.shipped'),
|
label: t('globals.shipped'),
|
||||||
name: 'shipped',
|
name: 'shipped',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
component: 'date',
|
component: 'date',
|
||||||
|
@ -90,7 +90,7 @@ const columns = computed(() => [
|
||||||
columnClass: 'shrink',
|
columnClass: 'shrink',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('item.buyRequest.price'),
|
label: t('globals.price'),
|
||||||
name: 'price',
|
name: 'price',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
format: (row) => toCurrency(row.price),
|
format: (row) => toCurrency(row.price),
|
||||||
|
@ -115,7 +115,7 @@ const columns = computed(() => [
|
||||||
columnClass: 'shrink',
|
columnClass: 'shrink',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('item.buyRequest.item'),
|
label: t('globals.item'),
|
||||||
name: 'item',
|
name: 'item',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
component: 'input',
|
component: 'input',
|
||||||
|
@ -137,7 +137,7 @@ const columns = computed(() => [
|
||||||
columnClass: 'expand',
|
columnClass: 'expand',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('item.buyRequest.state'),
|
label: t('globals.state'),
|
||||||
name: 'state',
|
name: 'state',
|
||||||
format: (row) => getState(row.isOk),
|
format: (row) => getState(row.isOk),
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
|
|
@ -10,11 +10,6 @@ shared:
|
||||||
fragile: Frágil
|
fragile: Frágil
|
||||||
summary:
|
summary:
|
||||||
id: id
|
id: id
|
||||||
code: Código
|
|
||||||
name: Nombre
|
|
||||||
worker: Trabajador
|
|
||||||
category: Reino
|
|
||||||
temperature: Temperatura
|
|
||||||
life: Vida
|
life: Vida
|
||||||
promo: Promoción
|
promo: Promoción
|
||||||
itemPackingType: Tipo de embalaje
|
itemPackingType: Tipo de embalaje
|
||||||
|
|
|
@ -16,7 +16,6 @@ itemDiary:
|
||||||
date: Date
|
date: Date
|
||||||
origin: Origin
|
origin: Origin
|
||||||
state: State
|
state: State
|
||||||
reference: Reference
|
|
||||||
entity: Entity
|
entity: Entity
|
||||||
in: In
|
in: In
|
||||||
out: Out
|
out: Out
|
||||||
|
@ -48,22 +47,17 @@ itemBasicData:
|
||||||
createIntrastatForm:
|
createIntrastatForm:
|
||||||
title: New intrastat
|
title: New intrastat
|
||||||
identifier: Identifier
|
identifier: Identifier
|
||||||
description: Description
|
|
||||||
tax:
|
tax:
|
||||||
country: Country
|
country: Country
|
||||||
class: Class
|
class: Class
|
||||||
lastEntries:
|
lastEntries:
|
||||||
since: Since
|
|
||||||
to: To
|
to: To
|
||||||
ig: Ig
|
ig: Ig
|
||||||
warehouse: Warehouse
|
|
||||||
landed: Landed
|
landed: Landed
|
||||||
entry: Entry
|
entry: Entry
|
||||||
pvp: PVP
|
pvp: PVP
|
||||||
label: Label
|
label: Label
|
||||||
packing: Packing
|
|
||||||
grouping: Grouping
|
grouping: Grouping
|
||||||
stems: Stems
|
|
||||||
quantity: Quantity
|
quantity: Quantity
|
||||||
cost: Cost
|
cost: Cost
|
||||||
kg: Kg.
|
kg: Kg.
|
||||||
|
@ -77,7 +71,6 @@ itemTags:
|
||||||
addTag: Add tag
|
addTag: Add tag
|
||||||
tag: Tag
|
tag: Tag
|
||||||
value: Value
|
value: Value
|
||||||
relevancy: Relevancy
|
|
||||||
searchbar:
|
searchbar:
|
||||||
label: Search item
|
label: Search item
|
||||||
info: Search by item id
|
info: Search by item id
|
||||||
|
|
|
@ -16,7 +16,6 @@ itemDiary:
|
||||||
date: Fecha
|
date: Fecha
|
||||||
origin: Origen
|
origin: Origen
|
||||||
state: Estado
|
state: Estado
|
||||||
reference: Referencia
|
|
||||||
entity: Entidad
|
entity: Entidad
|
||||||
in: Entrada
|
in: Entrada
|
||||||
out: Salida
|
out: Salida
|
||||||
|
@ -48,22 +47,17 @@ itemBasicData:
|
||||||
createIntrastatForm:
|
createIntrastatForm:
|
||||||
title: Nuevo intrastat
|
title: Nuevo intrastat
|
||||||
identifier: Identificador
|
identifier: Identificador
|
||||||
description: Descripción
|
|
||||||
tax:
|
tax:
|
||||||
country: País
|
country: País
|
||||||
class: Clase
|
class: Clase
|
||||||
lastEntries:
|
lastEntries:
|
||||||
since: Desde
|
|
||||||
to: Hasta
|
to: Hasta
|
||||||
ig: Ig
|
ig: Ig
|
||||||
warehouse: Almacén
|
|
||||||
landed: F. Entrega
|
landed: F. Entrega
|
||||||
entry: Entrada
|
entry: Entrada
|
||||||
pvp: PVP
|
pvp: PVP
|
||||||
label: Etiquetas
|
label: Etiquetas
|
||||||
packing: Packing
|
|
||||||
grouping: Grouping
|
grouping: Grouping
|
||||||
stems: Tallos
|
|
||||||
quantity: Cantidad
|
quantity: Cantidad
|
||||||
cost: Coste
|
cost: Coste
|
||||||
kg: Kg.
|
kg: Kg.
|
||||||
|
@ -77,7 +71,6 @@ itemTags:
|
||||||
addTag: Añadir etiqueta
|
addTag: Añadir etiqueta
|
||||||
tag: Etiqueta
|
tag: Etiqueta
|
||||||
value: Valor
|
value: Valor
|
||||||
relevancy: Relevancia
|
|
||||||
searchbar:
|
searchbar:
|
||||||
label: Buscar artículo
|
label: Buscar artículo
|
||||||
info: Buscar por id de artículo
|
info: Buscar por id de artículo
|
||||||
|
|
|
@ -44,7 +44,7 @@ const columns = computed(() => [
|
||||||
format: (row) => toDateTimeFormat(row.date_make),
|
format: (row) => toDateTimeFormat(row.date_make),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('salesOrdersTable.client'),
|
label: t('salesClientsTable.client'),
|
||||||
name: 'clientFk',
|
name: 'clientFk',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
|
@ -63,7 +63,7 @@ const columns = computed(() => [
|
||||||
columnFilter: false,
|
columnFilter: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('salesOrdersTable.salesPerson'),
|
label: t('salesClientsTable.salesPerson'),
|
||||||
name: 'salesPersonFk',
|
name: 'salesPersonFk',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
optionFilter: 'firstName',
|
optionFilter: 'firstName',
|
||||||
|
|
|
@ -77,7 +77,7 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('salesTicketsTable.client'),
|
label: t('salesClientsTable.client'),
|
||||||
name: 'clientFk',
|
name: 'clientFk',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
field: 'nickname',
|
field: 'nickname',
|
||||||
|
@ -91,7 +91,7 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('salesTicketsTable.salesPerson'),
|
label: t('salesClientsTable.salesPerson'),
|
||||||
name: 'salesPersonFk',
|
name: 'salesPersonFk',
|
||||||
field: 'userName',
|
field: 'userName',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -108,7 +108,7 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('salesTicketsTable.date'),
|
label: t('salesClientsTable.date'),
|
||||||
name: 'shippedDate',
|
name: 'shippedDate',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
|
|
|
@ -13,8 +13,6 @@ salesOrdersTable:
|
||||||
delete: Delete
|
delete: Delete
|
||||||
dateSend: Send date
|
dateSend: Send date
|
||||||
dateMake: Make date
|
dateMake: Make date
|
||||||
client: Client
|
|
||||||
salesPerson: Salesperson
|
|
||||||
deleteConfirmMessage: All the selected elements will be deleted. Are you sure you want to continue?
|
deleteConfirmMessage: All the selected elements will be deleted. Are you sure you want to continue?
|
||||||
agency: Agency
|
agency: Agency
|
||||||
import: Import
|
import: Import
|
||||||
|
@ -29,9 +27,6 @@ salesTicketsTable:
|
||||||
componentLack: Component lack
|
componentLack: Component lack
|
||||||
tooLittle: Ticket too little
|
tooLittle: Ticket too little
|
||||||
identifier: Identifier
|
identifier: Identifier
|
||||||
client: Client
|
|
||||||
salesPerson: Salesperson
|
|
||||||
date: Date
|
|
||||||
theoretical: Theoretical
|
theoretical: Theoretical
|
||||||
practical: Practical
|
practical: Practical
|
||||||
province: Province
|
province: Province
|
||||||
|
|
|
@ -13,8 +13,6 @@ salesOrdersTable:
|
||||||
delete: Eliminar
|
delete: Eliminar
|
||||||
dateSend: Fecha de envío
|
dateSend: Fecha de envío
|
||||||
dateMake: Fecha de realización
|
dateMake: Fecha de realización
|
||||||
client: Cliente
|
|
||||||
salesPerson: Comercial
|
|
||||||
deleteConfirmMessage: Todos los elementos seleccionados serán eliminados. ¿Seguro que quieres continuar?
|
deleteConfirmMessage: Todos los elementos seleccionados serán eliminados. ¿Seguro que quieres continuar?
|
||||||
agency: Agencia
|
agency: Agencia
|
||||||
import: Importe
|
import: Importe
|
||||||
|
@ -29,9 +27,6 @@ salesTicketsTable:
|
||||||
componentLack: Faltan componentes
|
componentLack: Faltan componentes
|
||||||
tooLittle: Ticket demasiado pequeño
|
tooLittle: Ticket demasiado pequeño
|
||||||
identifier: Identificador
|
identifier: Identificador
|
||||||
client: Cliente
|
|
||||||
salesPerson: Comercial
|
|
||||||
date: Fecha
|
|
||||||
theoretical: Teórica
|
theoretical: Teórica
|
||||||
practical: Práctica
|
practical: Práctica
|
||||||
province: Provincia
|
province: Provincia
|
||||||
|
|
|
@ -0,0 +1,163 @@
|
||||||
|
<script setup>
|
||||||
|
import { ref } from 'vue';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
import axios from 'axios';
|
||||||
|
import VnSelect from 'components/common/VnSelect.vue';
|
||||||
|
import VnInput from 'src/components/common/VnInput.vue';
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
tags: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(['applyTags']);
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
const tagValues = ref([{}]);
|
||||||
|
const tagOptions = ref([]);
|
||||||
|
const selectedTag = ref(null);
|
||||||
|
|
||||||
|
const applyTags = () => {
|
||||||
|
if (tagValues.value.some((tag) => !tag.value)) return;
|
||||||
|
const tagInfo = {
|
||||||
|
values: [...tagValues.value],
|
||||||
|
tagFk: selectedTag?.value?.id,
|
||||||
|
tagSelection: {
|
||||||
|
name: selectedTag?.value?.name,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
emit('applyTags', tagInfo);
|
||||||
|
};
|
||||||
|
|
||||||
|
const removeTagGroupParam = (valIndex = null) => {
|
||||||
|
if (!valIndex) {
|
||||||
|
tagValues.value = [{}];
|
||||||
|
} else {
|
||||||
|
(tagValues.value || []).splice(valIndex, 1);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const getSelectedTagValues = async (tag) => {
|
||||||
|
try {
|
||||||
|
if (!tag?.id) return;
|
||||||
|
const filter = {
|
||||||
|
fields: ['value'],
|
||||||
|
order: 'value ASC',
|
||||||
|
limit: 30,
|
||||||
|
};
|
||||||
|
|
||||||
|
const url = `Tags/${tag?.id}/filterValue`;
|
||||||
|
const params = { filter: JSON.stringify(filter) };
|
||||||
|
const { data } = await axios.get(url, {
|
||||||
|
params,
|
||||||
|
});
|
||||||
|
tagOptions.value = data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Error getting selected tag values');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<QForm @submit="applyTags(tagValues)" class="all-pointer-events">
|
||||||
|
<QCard class="q-pa-sm column q-pa-lg">
|
||||||
|
<QBtn
|
||||||
|
round
|
||||||
|
color="primary"
|
||||||
|
style="position: absolute; z-index: 1; right: 0; top: 0"
|
||||||
|
icon="search"
|
||||||
|
type="submit"
|
||||||
|
>
|
||||||
|
</QBtn>
|
||||||
|
|
||||||
|
<VnSelect
|
||||||
|
:label="t('params.tag')"
|
||||||
|
v-model="selectedTag"
|
||||||
|
:options="props.tags"
|
||||||
|
option-value="id"
|
||||||
|
option-label="name"
|
||||||
|
dense
|
||||||
|
outlined
|
||||||
|
class="q-mb-md"
|
||||||
|
rounded
|
||||||
|
:emit-value="false"
|
||||||
|
use-input
|
||||||
|
@update:model-value="($event) => getSelectedTagValues($event)"
|
||||||
|
/>
|
||||||
|
<QBtn
|
||||||
|
icon="add_circle"
|
||||||
|
shortcut="+"
|
||||||
|
flat
|
||||||
|
class="filter-icon q-mb-md"
|
||||||
|
size="md"
|
||||||
|
dense
|
||||||
|
:disabled="!selectedTag || !tagValues[0].value"
|
||||||
|
@click="tagValues.unshift({})"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
v-for="(value, index) in tagValues"
|
||||||
|
:key="value"
|
||||||
|
class="filter-value column align-left"
|
||||||
|
>
|
||||||
|
<div class="col row q-mb-md">
|
||||||
|
<VnSelect
|
||||||
|
v-if="!selectedTag?.isFree && tagOptions"
|
||||||
|
:label="t('components.itemsFilterPanel.value')"
|
||||||
|
v-model="value.value"
|
||||||
|
:options="tagOptions || []"
|
||||||
|
option-value="value"
|
||||||
|
option-label="value"
|
||||||
|
dense
|
||||||
|
outlined
|
||||||
|
rounded
|
||||||
|
emit-value
|
||||||
|
use-input
|
||||||
|
:disable="!value || !selectedTag"
|
||||||
|
:is-clearable="false"
|
||||||
|
class="col"
|
||||||
|
/>
|
||||||
|
<VnInput
|
||||||
|
v-else
|
||||||
|
v-model="value.value"
|
||||||
|
:label="t('components.itemsFilterPanel.value')"
|
||||||
|
:disable="!value"
|
||||||
|
is-outlined
|
||||||
|
:is-clearable="false"
|
||||||
|
class="col"
|
||||||
|
/>
|
||||||
|
<QBtn
|
||||||
|
icon="delete"
|
||||||
|
size="md"
|
||||||
|
outlined
|
||||||
|
dense
|
||||||
|
rounded
|
||||||
|
flat
|
||||||
|
class="filter-icon col-2"
|
||||||
|
:disabled="!value.value"
|
||||||
|
@click="removeTagGroupParam(index)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</QCard>
|
||||||
|
</QForm>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.filter-icon {
|
||||||
|
font-size: 24px;
|
||||||
|
color: $primary;
|
||||||
|
padding: 0 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<i18n>
|
||||||
|
en:
|
||||||
|
params:
|
||||||
|
tag: Tag
|
||||||
|
es:
|
||||||
|
params:
|
||||||
|
tag: Etiqueta
|
||||||
|
</i18n>
|
|
@ -162,7 +162,7 @@ const onClientChange = async (clientId) => {
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInputDate
|
<VnInputDate
|
||||||
placeholder="dd-mm-aaa"
|
placeholder="dd-mm-aaa"
|
||||||
:label="t('order.form.landed')"
|
:label="t('globals.landed')"
|
||||||
v-model="data.landed"
|
v-model="data.landed"
|
||||||
@update:model-value="
|
@update:model-value="
|
||||||
() => fetchAgencyList(data.landed, data.addressFk)
|
() => fetchAgencyList(data.landed, data.addressFk)
|
||||||
|
|
|
@ -1,30 +1,57 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { useStateStore } from 'stores/useStateStore';
|
import { useStateStore } from 'stores/useStateStore';
|
||||||
import { useRoute, useRouter } from 'vue-router';
|
import { useRoute, useRouter } from 'vue-router';
|
||||||
import { onMounted, onUnmounted, ref } from 'vue';
|
import { onBeforeMount, onMounted, onUnmounted, ref, computed, watch } from 'vue';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import VnPaginate from 'components/ui/VnPaginate.vue';
|
import VnPaginate from 'components/ui/VnPaginate.vue';
|
||||||
import CatalogItem from 'components/ui/CatalogItem.vue';
|
import CatalogItem from 'components/ui/CatalogItem.vue';
|
||||||
import OrderCatalogFilter from 'pages/Order/Card/OrderCatalogFilter.vue';
|
import OrderCatalogFilter from 'pages/Order/Card/OrderCatalogFilter.vue';
|
||||||
import VnSearchbar from 'src/components/ui/VnSearchbar.vue';
|
import VnSearchbar from 'src/components/ui/VnSearchbar.vue';
|
||||||
|
import getParamWhere from 'src/filters/getParamWhere';
|
||||||
|
import { useArrayData } from 'composables/useArrayData';
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const stateStore = useStateStore();
|
const stateStore = useStateStore();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
const arrayData = useArrayData('OrderCatalogList');
|
||||||
|
const store = arrayData.store;
|
||||||
|
const showFilter = ref(null);
|
||||||
const tags = ref([]);
|
const tags = ref([]);
|
||||||
|
|
||||||
|
let catalogParams = {
|
||||||
|
orderFk: route.params.id,
|
||||||
|
orderBy: JSON.stringify({ field: 'relevancy DESC, name', way: 'ASC', isTag: false }),
|
||||||
|
};
|
||||||
|
|
||||||
|
onBeforeMount(() => {
|
||||||
|
const whereParams = getParamWhere(route);
|
||||||
|
if (whereParams) {
|
||||||
|
const formattedWhereParams = {};
|
||||||
|
if (whereParams.and) {
|
||||||
|
whereParams.and.forEach((item) => {
|
||||||
|
Object.assign(formattedWhereParams, item);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
Object.assign(formattedWhereParams, whereParams);
|
||||||
|
}
|
||||||
|
|
||||||
|
catalogParams = {
|
||||||
|
...catalogParams,
|
||||||
|
...formattedWhereParams,
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
showFilter.value = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
stateStore.rightDrawer = true;
|
stateStore.rightDrawer = true;
|
||||||
checkOrderConfirmation();
|
checkOrderConfirmation();
|
||||||
});
|
});
|
||||||
onUnmounted(() => (stateStore.rightDrawer = false));
|
|
||||||
|
|
||||||
const catalogParams = {
|
onUnmounted(() => (stateStore.rightDrawer = false));
|
||||||
orderFk: route.params.id,
|
|
||||||
orderBy: JSON.stringify({ field: 'relevancy DESC, name', way: 'ASC', isTag: false }),
|
|
||||||
};
|
|
||||||
|
|
||||||
async function checkOrderConfirmation() {
|
async function checkOrderConfirmation() {
|
||||||
const response = await axios.get(`Orders/${route.params.id}`);
|
const response = await axios.get(`Orders/${route.params.id}`);
|
||||||
|
@ -34,6 +61,7 @@ async function checkOrderConfirmation() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function extractTags(items) {
|
function extractTags(items) {
|
||||||
|
if (!items || !items.length) return;
|
||||||
const resultTags = [];
|
const resultTags = [];
|
||||||
(items || []).forEach((item) => {
|
(items || []).forEach((item) => {
|
||||||
(item.tags || []).forEach((tag) => {
|
(item.tags || []).forEach((tag) => {
|
||||||
|
@ -61,6 +89,15 @@ function extractValueTags(items) {
|
||||||
);
|
);
|
||||||
tagValue.value = resultValueTags;
|
tagValue.value = resultValueTags;
|
||||||
}
|
}
|
||||||
|
const autoLoad = computed(() => !!catalogParams.categoryFk);
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => store.data,
|
||||||
|
(val) => {
|
||||||
|
extractTags(val);
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -74,11 +111,12 @@ function extractValueTags(items) {
|
||||||
:info="t('You can search items by name or id')"
|
:info="t('You can search items by name or id')"
|
||||||
/>
|
/>
|
||||||
<QDrawer v-model="stateStore.rightDrawer" side="right" :width="256" show-if-above>
|
<QDrawer v-model="stateStore.rightDrawer" side="right" :width="256" show-if-above>
|
||||||
<QScrollArea class="fit text-grey-8">
|
<QScrollArea v-if="showFilter" class="fit text-grey-8">
|
||||||
<OrderCatalogFilter
|
<OrderCatalogFilter
|
||||||
data-key="OrderCatalogList"
|
data-key="OrderCatalogList"
|
||||||
:tag-value="tagValue"
|
:tag-value="tagValue"
|
||||||
:tags="tags"
|
:tags="tags"
|
||||||
|
:initial-catalog-params="catalogParams"
|
||||||
/>
|
/>
|
||||||
</QScrollArea>
|
</QScrollArea>
|
||||||
</QDrawer>
|
</QDrawer>
|
||||||
|
@ -89,8 +127,9 @@ function extractValueTags(items) {
|
||||||
url="Orders/CatalogFilter"
|
url="Orders/CatalogFilter"
|
||||||
:limit="50"
|
:limit="50"
|
||||||
:user-params="catalogParams"
|
:user-params="catalogParams"
|
||||||
@on-fetch="extractTags"
|
@on-fetch="showFilter = true"
|
||||||
:update-router="false"
|
:update-router="false"
|
||||||
|
:auto-load="autoLoad"
|
||||||
>
|
>
|
||||||
<template #body="{ rows }">
|
<template #body="{ rows }">
|
||||||
<div class="catalog-list">
|
<div class="catalog-list">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { computed, ref } from 'vue';
|
import { computed, ref, onMounted } from 'vue';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
|
@ -9,10 +9,9 @@ import VnSelect from 'components/common/VnSelect.vue';
|
||||||
import VnFilterPanelChip from 'components/ui/VnFilterPanelChip.vue';
|
import VnFilterPanelChip from 'components/ui/VnFilterPanelChip.vue';
|
||||||
import VnInput from 'src/components/common/VnInput.vue';
|
import VnInput from 'src/components/common/VnInput.vue';
|
||||||
import getParamWhere from 'src/filters/getParamWhere';
|
import getParamWhere from 'src/filters/getParamWhere';
|
||||||
|
import CatalogFilterValueDialog from 'src/pages/Order/Card/CatalogFilterValueDialog.vue';
|
||||||
|
import { useArrayData } from 'composables/useArrayData';
|
||||||
|
|
||||||
const { t } = useI18n();
|
|
||||||
|
|
||||||
const route = useRoute();
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
dataKey: {
|
dataKey: {
|
||||||
type: String,
|
type: String,
|
||||||
|
@ -27,13 +26,18 @@ const props = defineProps({
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const { t } = useI18n();
|
||||||
|
const route = useRoute();
|
||||||
|
|
||||||
|
const arrayData = useArrayData(props.dataKey);
|
||||||
|
|
||||||
const categoryList = ref(null);
|
const categoryList = ref(null);
|
||||||
const selectedCategoryFk = ref(getParamWhere(route, 'categoryFk'));
|
const selectedCategoryFk = ref(null);
|
||||||
const typeList = ref([]);
|
const typeList = ref([]);
|
||||||
const selectedTypeFk = ref(null);
|
const selectedTypeFk = ref(null);
|
||||||
const selectedTag = ref(null);
|
const generalSearchParam = ref(null);
|
||||||
const tagValues = ref([{}]);
|
|
||||||
const tagOptions = ref([]);
|
|
||||||
const vnFilterPanelRef = ref();
|
const vnFilterPanelRef = ref();
|
||||||
const orderByList = ref([
|
const orderByList = ref([
|
||||||
{ id: 'relevancy DESC, name', name: t('params.relevancy'), priority: 999 },
|
{ id: 'relevancy DESC, name', name: t('params.relevancy'), priority: 999 },
|
||||||
|
@ -48,32 +52,24 @@ const orderWayList = ref([
|
||||||
const orderBySelected = ref('relevancy DESC, name');
|
const orderBySelected = ref('relevancy DESC, name');
|
||||||
const orderWaySelected = ref('ASC');
|
const orderWaySelected = ref('ASC');
|
||||||
|
|
||||||
const createValue = (val, done) => {
|
const resetCategory = (params, search) => {
|
||||||
if (val.length > 2) {
|
|
||||||
if (!tagOptions.value.includes(val)) {
|
|
||||||
done(tagOptions.value, 'add-unique');
|
|
||||||
}
|
|
||||||
tagValues.value.push({ value: val });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const resetCategory = () => {
|
|
||||||
selectedCategoryFk.value = null;
|
selectedCategoryFk.value = null;
|
||||||
typeList.value = null;
|
typeList.value = null;
|
||||||
};
|
params.categoryFk = null;
|
||||||
|
params.typeFk = null;
|
||||||
const clearFilter = (key) => {
|
arrayData.store.userFilter = null;
|
||||||
if (key === 'categoryFk') {
|
removeTagGroupParam(params, search);
|
||||||
resetCategory();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const selectCategory = (params, category, search) => {
|
const selectCategory = (params, category, search) => {
|
||||||
if (params.categoryFk === category?.id) {
|
if (params.categoryFk === category?.id) {
|
||||||
resetCategory();
|
resetCategory(params, search);
|
||||||
params.categoryFk = null;
|
params.categoryFk = null;
|
||||||
} else {
|
} else {
|
||||||
selectedCategoryFk.value = category?.id;
|
selectedCategoryFk.value = category?.id;
|
||||||
params.categoryFk = category?.id;
|
params.categoryFk = category?.id;
|
||||||
|
params.typeFk = null;
|
||||||
|
selectedTypeFk.value = null;
|
||||||
loadTypes(category?.id);
|
loadTypes(category?.id);
|
||||||
}
|
}
|
||||||
search();
|
search();
|
||||||
|
@ -86,19 +82,12 @@ const loadTypes = async (categoryFk = selectedCategoryFk.value) => {
|
||||||
typeList.value = data;
|
typeList.value = data;
|
||||||
};
|
};
|
||||||
|
|
||||||
const selectedCategory = computed(() =>
|
const selectedCategory = computed(() => {
|
||||||
(categoryList.value || []).find(
|
return (categoryList.value || []).find(
|
||||||
(category) => category?.id === selectedCategoryFk.value
|
(category) => category?.id === selectedCategoryFk.value
|
||||||
)
|
);
|
||||||
);
|
});
|
||||||
function filterFn(val, update) {
|
|
||||||
update(() => {
|
|
||||||
const needle = val.toLowerCase();
|
|
||||||
tagOptions.value = props.tagValue.filter(
|
|
||||||
(v) => v.toLowerCase().indexOf(needle) > -1
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
const selectedType = computed(() => {
|
const selectedType = computed(() => {
|
||||||
return (typeList.value || []).find((type) => type?.id === selectedTypeFk.value);
|
return (typeList.value || []).find((type) => type?.id === selectedTypeFk.value);
|
||||||
});
|
});
|
||||||
|
@ -114,37 +103,26 @@ function exprBuilder(param, value) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const applyTagFilter = (params, search) => {
|
const applyTags = (tagInfo, params, search) => {
|
||||||
if (!tagValues.value?.length) {
|
if (!tagInfo || !tagInfo.values.length) {
|
||||||
params.tagGroups = null;
|
params.tagGroups = null;
|
||||||
search();
|
search();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!params.tagGroups) {
|
|
||||||
params.tagGroups = [];
|
if (!params.tagGroups) params.tagGroups = [];
|
||||||
}
|
params.tagGroups.push(tagInfo);
|
||||||
params.tagGroups.push(
|
|
||||||
JSON.stringify({
|
|
||||||
values: tagValues.value.filter((obj) => Object.keys(obj).length > 0),
|
|
||||||
tagSelection: {
|
|
||||||
...selectedTag.value,
|
|
||||||
orgShowField: selectedTag?.value?.name,
|
|
||||||
},
|
|
||||||
tagFk: selectedTag?.value?.tagFk,
|
|
||||||
})
|
|
||||||
);
|
|
||||||
search();
|
search();
|
||||||
selectedTag.value = null;
|
|
||||||
tagValues.value = [{}];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const removeTagChip = (selection, params, search) => {
|
const removeTagGroupParam = (params, search, valIndex = null) => {
|
||||||
if (params.tagGroups) {
|
if (!valIndex) {
|
||||||
params.tagGroups = (params.tagGroups || []).filter(
|
params.tagGroups = null;
|
||||||
(value) => value !== selection
|
search();
|
||||||
);
|
} else {
|
||||||
|
params.tagGroups.splice(valIndex, 1);
|
||||||
|
search();
|
||||||
}
|
}
|
||||||
search();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const setCategoryList = (data) => {
|
const setCategoryList = (data) => {
|
||||||
|
@ -171,6 +149,11 @@ function addOrder(value, field, params) {
|
||||||
params.orderBy = JSON.stringify(orderBy);
|
params.orderBy = JSON.stringify(orderBy);
|
||||||
vnFilterPanelRef.value.search();
|
vnFilterPanelRef.value.search();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
selectedCategoryFk.value = getParamWhere(route, 'categoryFk');
|
||||||
|
selectedTypeFk.value = getParamWhere(route, 'typeFk');
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -181,15 +164,11 @@ function addOrder(value, field, params) {
|
||||||
:hidden-tags="['orderFk', 'orderBy']"
|
:hidden-tags="['orderFk', 'orderBy']"
|
||||||
:un-removable-params="['orderFk', 'orderBy']"
|
:un-removable-params="['orderFk', 'orderBy']"
|
||||||
:expr-builder="exprBuilder"
|
:expr-builder="exprBuilder"
|
||||||
:custom-tags="['tagGroups']"
|
:custom-tags="['tagGroups', 'categoryFk']"
|
||||||
@remove="clearFilter"
|
|
||||||
:redirect="false"
|
:redirect="false"
|
||||||
>
|
>
|
||||||
<template #tags="{ tag, formatFn }">
|
<template #tags="{ tag, formatFn }">
|
||||||
<strong v-if="tag.label === 'categoryFk'">
|
<strong v-if="tag.label === 'typeFk'">
|
||||||
{{ t(selectedCategory?.name || '') }}
|
|
||||||
</strong>
|
|
||||||
<strong v-else-if="tag.label === 'typeFk'">
|
|
||||||
{{ t(selectedType?.name || '') }}
|
{{ t(selectedType?.name || '') }}
|
||||||
</strong>
|
</strong>
|
||||||
<div v-else class="q-gutter-x-xs">
|
<div v-else class="q-gutter-x-xs">
|
||||||
|
@ -198,22 +177,33 @@ function addOrder(value, field, params) {
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #customTags="{ tags: customTags, params, searchFn }">
|
<template #customTags="{ tags: customTags, params, searchFn }">
|
||||||
<template v-for="tag in customTags" :key="tag.label">
|
<template v-for="customTag in customTags" :key="customTag.label">
|
||||||
<template v-if="tag.label === 'tagGroups'">
|
<VnFilterPanelChip
|
||||||
<VnFilterPanelChip
|
v-for="(tag, valIndex) in Array.isArray(customTag.value)
|
||||||
v-for="chip in tag.value"
|
? customTag.value
|
||||||
:key="chip"
|
: 1"
|
||||||
removable
|
:key="valIndex"
|
||||||
@remove="removeTagChip(chip, params, searchFn)"
|
removable
|
||||||
>
|
@remove="
|
||||||
<strong> {{ JSON.parse(chip).tagSelection?.name }}: </strong>
|
customTag.label === 'categoryFk'
|
||||||
<span>{{
|
? resetCategory(params, searchFn)
|
||||||
(JSON.parse(chip).values || [])
|
: removeTagGroupParam(params, searchFn, valIndex)
|
||||||
.map((item) => item.value)
|
"
|
||||||
.join(' | ')
|
>
|
||||||
}}</span>
|
<strong v-if="customTag.label === 'categoryFk'">
|
||||||
</VnFilterPanelChip>
|
{{ t(selectedCategory?.name || '') }}
|
||||||
</template>
|
</strong>
|
||||||
|
<strong v-if="tag?.tagSelection?.name" class="q-mr-xs">
|
||||||
|
{{ tag.tagSelection.name }}:
|
||||||
|
</strong>
|
||||||
|
<span>
|
||||||
|
{{
|
||||||
|
(tag?.values || [])
|
||||||
|
.map((item) => `"${item.value}"`)
|
||||||
|
.join(', ')
|
||||||
|
}}
|
||||||
|
</span>
|
||||||
|
</VnFilterPanelChip>
|
||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
<template #body="{ params, searchFn }">
|
<template #body="{ params, searchFn }">
|
||||||
|
@ -297,91 +287,46 @@ function addOrder(value, field, params) {
|
||||||
</QItemSection>
|
</QItemSection>
|
||||||
</QItem>
|
</QItem>
|
||||||
<QSeparator />
|
<QSeparator />
|
||||||
<QItem class="q-mt-md">
|
|
||||||
<QItemSection>
|
|
||||||
<VnSelect
|
|
||||||
:label="t('params.tag')"
|
|
||||||
v-model="selectedTag"
|
|
||||||
:options="props.tags || []"
|
|
||||||
option-value="id"
|
|
||||||
option-label="name"
|
|
||||||
dense
|
|
||||||
outlined
|
|
||||||
rounded
|
|
||||||
:emit-value="false"
|
|
||||||
use-input
|
|
||||||
/>
|
|
||||||
</QItemSection>
|
|
||||||
</QItem>
|
|
||||||
<QItem
|
|
||||||
v-for="(value, index) in tagValues"
|
|
||||||
:key="value"
|
|
||||||
class="q-mt-md filter-value"
|
|
||||||
>
|
|
||||||
<FetchData
|
|
||||||
v-if="selectedTag"
|
|
||||||
:url="`Tags/${selectedTag}/filterValue`"
|
|
||||||
limit="30"
|
|
||||||
auto-load
|
|
||||||
@on-fetch="(data) => (tagOptions = data)"
|
|
||||||
/>
|
|
||||||
<VnSelect
|
|
||||||
v-if="!selectedTag"
|
|
||||||
:label="t('params.value')"
|
|
||||||
v-model="value.value"
|
|
||||||
:options="tagOptions || []"
|
|
||||||
option-value="value"
|
|
||||||
option-label="value"
|
|
||||||
dense
|
|
||||||
outlined
|
|
||||||
rounded
|
|
||||||
emit-value
|
|
||||||
use-input
|
|
||||||
class="filter-input"
|
|
||||||
@new-value="createValue"
|
|
||||||
@filter="filterFn"
|
|
||||||
@update:model-value="applyTagFilter(params, searchFn)"
|
|
||||||
/>
|
|
||||||
<VnSelect
|
|
||||||
v-else-if="selectedTag === 1"
|
|
||||||
:label="t('params.value')"
|
|
||||||
v-model="value.value"
|
|
||||||
:options="tagOptions || []"
|
|
||||||
option-value="value"
|
|
||||||
option-label="value"
|
|
||||||
dense
|
|
||||||
outlined
|
|
||||||
rounded
|
|
||||||
emit-value
|
|
||||||
use-input
|
|
||||||
class="filter-input"
|
|
||||||
@new-value="createValue"
|
|
||||||
@update:model-value="applyTagFilter(params, searchFn)"
|
|
||||||
/>
|
|
||||||
<VnInput
|
|
||||||
v-else
|
|
||||||
:label="t('params.value')"
|
|
||||||
v-model="value.value"
|
|
||||||
dense
|
|
||||||
outlined
|
|
||||||
rounded
|
|
||||||
class="filter-input"
|
|
||||||
@keyup.enter="applyTagFilter(params, searchFn)"
|
|
||||||
/>
|
|
||||||
<QIcon
|
|
||||||
name="delete"
|
|
||||||
class="filter-icon"
|
|
||||||
@click="(tagValues || []).splice(index, 1)"
|
|
||||||
/>
|
|
||||||
</QItem>
|
|
||||||
<QItem class="q-mt-lg">
|
<QItem class="q-mt-lg">
|
||||||
<QBtn
|
<VnSelect
|
||||||
icon="add_circle"
|
:label="t('components.itemsFilterPanel.value')"
|
||||||
shortcut="+"
|
:options="props.tagValue"
|
||||||
flat
|
dense
|
||||||
class="filter-icon"
|
outlined
|
||||||
@click="tagValues.push({})"
|
rounded
|
||||||
/>
|
:is-clearable="false"
|
||||||
|
v-model="generalSearchParam"
|
||||||
|
@update:model-value="
|
||||||
|
applyTags(
|
||||||
|
{ values: [{ value: generalSearchParam }] },
|
||||||
|
params,
|
||||||
|
searchFn
|
||||||
|
)
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<template #prepend>
|
||||||
|
<QIcon name="search" />
|
||||||
|
</template>
|
||||||
|
<template #after>
|
||||||
|
<QBtn
|
||||||
|
icon="add_circle"
|
||||||
|
shortcut="+"
|
||||||
|
flat
|
||||||
|
color="primary"
|
||||||
|
size="md"
|
||||||
|
/>
|
||||||
|
<QPopupProxy>
|
||||||
|
<CatalogFilterValueDialog
|
||||||
|
style="display: inline-block"
|
||||||
|
:tags="tags"
|
||||||
|
@apply-tags="
|
||||||
|
($event) => applyTags($event, params, searchFn)
|
||||||
|
"
|
||||||
|
/>
|
||||||
|
</QPopupProxy>
|
||||||
|
</template>
|
||||||
|
</VnSelect>
|
||||||
</QItem>
|
</QItem>
|
||||||
<QSeparator />
|
<QSeparator />
|
||||||
</template>
|
</template>
|
||||||
|
@ -416,23 +361,6 @@ function addOrder(value, field, params) {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.filter-icon {
|
|
||||||
font-size: 24px;
|
|
||||||
color: $primary;
|
|
||||||
padding: 0 4px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.filter-input {
|
|
||||||
flex-shrink: 1;
|
|
||||||
min-width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.filter-value {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<i18n>
|
<i18n>
|
||||||
|
|
|
@ -185,7 +185,7 @@ onMounted(async () => {
|
||||||
<VnRow class="row q-gutter-md q-mb-md">
|
<VnRow class="row q-gutter-md q-mb-md">
|
||||||
<VnInputDate
|
<VnInputDate
|
||||||
placeholder="dd-mm-aaa"
|
placeholder="dd-mm-aaa"
|
||||||
:label="t('order.form.landed')"
|
:label="t('globals.landed')"
|
||||||
v-model="data.landed"
|
v-model="data.landed"
|
||||||
@update:model-value="
|
@update:model-value="
|
||||||
() => fetchAgencyList(data.landed, data.addressId)
|
() => fetchAgencyList(data.landed, data.addressId)
|
||||||
|
|
|
@ -67,7 +67,7 @@ const setData = (entity) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const getConfirmationValue = (isConfirmed) => {
|
const getConfirmationValue = (isConfirmed) => {
|
||||||
return t(isConfirmed ? 'order.summary.confirmed' : 'order.summary.notConfirmed');
|
return t(isConfirmed ? 'globals.confirmed' : 'order.summary.notConfirmed');
|
||||||
};
|
};
|
||||||
|
|
||||||
const total = ref(null);
|
const total = ref(null);
|
||||||
|
@ -94,7 +94,7 @@ const total = ref(null);
|
||||||
</template>
|
</template>
|
||||||
<template #body="{ entity }">
|
<template #body="{ entity }">
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('order.summary.state')"
|
:label="t('globals.state')"
|
||||||
:value="getConfirmationValue(entity.isConfirmed)"
|
:value="getConfirmationValue(entity.isConfirmed)"
|
||||||
/>
|
/>
|
||||||
<VnLv :label="t('order.field.salesPersonFk')">
|
<VnLv :label="t('order.field.salesPersonFk')">
|
||||||
|
@ -105,9 +105,9 @@ const total = ref(null);
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</VnLv>
|
</VnLv>
|
||||||
<VnLv :label="t('order.summary.landed')" :value="toDate(entity?.landed)" />
|
<VnLv :label="t('globals.landed')" :value="toDate(entity?.landed)" />
|
||||||
<VnLv :label="t('order.field.agency')" :value="entity?.agencyMode?.name" />
|
<VnLv :label="t('globals.agency')" :value="entity?.agencyMode?.name" />
|
||||||
<VnLv :label="t('order.summary.alias')" :value="entity?.address?.nickname" />
|
<VnLv :label="t('globals.alias')" :value="entity?.address?.nickname" />
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('order.summary.items')"
|
:label="t('order.summary.items')"
|
||||||
:value="(entity?.rows?.length || DEFAULT_ITEMS).toString()"
|
:value="(entity?.rows?.length || DEFAULT_ITEMS).toString()"
|
||||||
|
|
|
@ -30,7 +30,7 @@ const descriptorData = useArrayData('orderData');
|
||||||
const detailsColumns = ref([
|
const detailsColumns = ref([
|
||||||
{
|
{
|
||||||
name: 'item',
|
name: 'item',
|
||||||
label: t('order.summary.item'),
|
label: t('globals.item'),
|
||||||
field: (row) => row?.item?.id,
|
field: (row) => row?.item?.id,
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
|
@ -41,12 +41,12 @@ const detailsColumns = ref([
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'quantity',
|
name: 'quantity',
|
||||||
label: t('order.summary.quantity'),
|
label: t('globals.quantity'),
|
||||||
field: (row) => row?.quantity,
|
field: (row) => row?.quantity,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'price',
|
name: 'price',
|
||||||
label: t('order.summary.price'),
|
label: t('globals.price'),
|
||||||
field: (row) => toCurrency(row?.price),
|
field: (row) => toCurrency(row?.price),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -98,7 +98,7 @@ async function handleConfirm() {
|
||||||
:text="t('globals.pageTitles.basicData')"
|
:text="t('globals.pageTitles.basicData')"
|
||||||
/>
|
/>
|
||||||
<VnLv label="ID" :value="entity.id" />
|
<VnLv label="ID" :value="entity.id" />
|
||||||
<VnLv :label="t('order.summary.nickname')" dash>
|
<VnLv :label="t('globals.alias')" dash>
|
||||||
<template #value>
|
<template #value>
|
||||||
<span class="link">
|
<span class="link">
|
||||||
{{ dashIfEmpty(entity?.address?.nickname) }}
|
{{ dashIfEmpty(entity?.address?.nickname) }}
|
||||||
|
@ -107,11 +107,11 @@ async function handleConfirm() {
|
||||||
</template>
|
</template>
|
||||||
</VnLv>
|
</VnLv>
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('order.summary.company')"
|
:label="t('globals.company')"
|
||||||
:value="entity?.address?.companyFk"
|
:value="entity?.address?.companyFk"
|
||||||
/>
|
/>
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('order.summary.confirmed')"
|
:label="t('globals.confirmed')"
|
||||||
:value="Boolean(entity?.isConfirmed)"
|
:value="Boolean(entity?.isConfirmed)"
|
||||||
/>
|
/>
|
||||||
</QCard>
|
</QCard>
|
||||||
|
@ -125,14 +125,14 @@ async function handleConfirm() {
|
||||||
:value="toDateHourMinSec(entity?.created)"
|
:value="toDateHourMinSec(entity?.created)"
|
||||||
/>
|
/>
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('order.summary.confirmed')"
|
:label="t('globals.confirmed')"
|
||||||
:value="toDateHourMinSec(entity?.confirmed)"
|
:value="toDateHourMinSec(entity?.confirmed)"
|
||||||
/>
|
/>
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('order.summary.landed')"
|
:label="t('globals.landed')"
|
||||||
:value="toDateHourMinSec(entity?.landed)"
|
:value="toDateHourMinSec(entity?.landed)"
|
||||||
/>
|
/>
|
||||||
<VnLv :label="t('order.summary.phone')">
|
<VnLv :label="t('globals.phone')">
|
||||||
<template #value>
|
<template #value>
|
||||||
{{ dashIfEmpty(entity?.address?.phone) }}
|
{{ dashIfEmpty(entity?.address?.phone) }}
|
||||||
<a
|
<a
|
||||||
|
@ -164,7 +164,7 @@ async function handleConfirm() {
|
||||||
<VnTitle :text="t('order.summary.total')" />
|
<VnTitle :text="t('order.summary.total')" />
|
||||||
<VnLv>
|
<VnLv>
|
||||||
<template #label>
|
<template #label>
|
||||||
<span class="text-h6">{{ t('order.summary.subtotal') }}</span>
|
<span class="text-h6">{{ t('globals.subtotal') }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template #value>
|
<template #value>
|
||||||
<span class="text-h6">{{
|
<span class="text-h6">{{
|
||||||
|
@ -174,7 +174,7 @@ async function handleConfirm() {
|
||||||
</VnLv>
|
</VnLv>
|
||||||
<VnLv>
|
<VnLv>
|
||||||
<template #label>
|
<template #label>
|
||||||
<span class="text-h6">{{ t('order.summary.vat') }}</span>
|
<span class="text-h6">{{ t('globals.vat') }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template #value>
|
<template #value>
|
||||||
<span class="text-h6">{{ toCurrency(entity?.VAT) }}</span>
|
<span class="text-h6">{{ toCurrency(entity?.VAT) }}</span>
|
||||||
|
@ -190,14 +190,14 @@ async function handleConfirm() {
|
||||||
</VnLv>
|
</VnLv>
|
||||||
</QCard>
|
</QCard>
|
||||||
<QCard>
|
<QCard>
|
||||||
<VnTitle :text="t('order.summary.details')" />
|
<VnTitle :text="t('globals.details')" />
|
||||||
<QTable :columns="detailsColumns" :rows="entity?.rows" flat>
|
<QTable :columns="detailsColumns" :rows="entity?.rows" flat>
|
||||||
<template #header="props">
|
<template #header="props">
|
||||||
<QTr :props="props">
|
<QTr :props="props">
|
||||||
<QTh auto-width>{{ t('order.summary.item') }}</QTh>
|
<QTh auto-width>{{ t('globals.item') }}</QTh>
|
||||||
<QTh>{{ t('globals.description') }}</QTh>
|
<QTh>{{ t('globals.description') }}</QTh>
|
||||||
<QTh auto-width>{{ t('order.summary.quantity') }}</QTh>
|
<QTh auto-width>{{ t('globals.quantity') }}</QTh>
|
||||||
<QTh auto-width>{{ t('order.summary.price') }}</QTh>
|
<QTh auto-width>{{ t('globals.price') }}</QTh>
|
||||||
<QTh auto-width>{{ t('order.summary.amount') }}</QTh>
|
<QTh auto-width>{{ t('order.summary.amount') }}</QTh>
|
||||||
</QTr>
|
</QTr>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -116,7 +116,7 @@ function getApiUrl() {
|
||||||
return new URL(window.location).origin;
|
return new URL(window.location).origin;
|
||||||
}
|
}
|
||||||
function getCmrUrl(value) {
|
function getCmrUrl(value) {
|
||||||
return `${getApiUrl()}/api/Routes/${value}/cmr?access_token=${token}`;
|
return `${getApiUrl()}/api/Cmrs/${value}/print?access_token=${token}`;
|
||||||
}
|
}
|
||||||
function downloadPdfs() {
|
function downloadPdfs() {
|
||||||
if (!selectedRows.value.length) {
|
if (!selectedRows.value.length) {
|
||||||
|
@ -129,7 +129,7 @@ function downloadPdfs() {
|
||||||
let cmrs = [];
|
let cmrs = [];
|
||||||
for (let value of selectedRows.value) cmrs.push(value.cmrFk);
|
for (let value of selectedRows.value) cmrs.push(value.cmrFk);
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
return window.open(`${getApiUrl()}/api/Routes/downloadCmrsZip?ids=${cmrs.join(',')}&access_token=${token}`);
|
return window.open(`${getApiUrl()}/api/Cmrs/downloadZip?ids=${cmrs.join(',')}&access_token=${token}`);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
|
@ -149,7 +149,7 @@ function downloadPdfs() {
|
||||||
<VnTable
|
<VnTable
|
||||||
ref="tableRef"
|
ref="tableRef"
|
||||||
data-key="CmrList"
|
data-key="CmrList"
|
||||||
url="Routes/cmrs"
|
url="Cmrs/filter"
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
:right-search="true"
|
:right-search="true"
|
||||||
default-mode="table"
|
default-mode="table"
|
||||||
|
|
|
@ -53,9 +53,9 @@ const setData = (entity) => (data.value = useCardDescription(entity.code, entity
|
||||||
@on-fetch="setData"
|
@on-fetch="setData"
|
||||||
>
|
>
|
||||||
<template #body="{ entity }">
|
<template #body="{ entity }">
|
||||||
<VnLv :label="t('shelving.summary.code')" :value="entity.code" />
|
<VnLv :label="t('globals.code')" :value="entity.code" />
|
||||||
<VnLv :label="t('shelving.summary.parking')" :value="entity.parking?.code" />
|
<VnLv :label="t('shelving.list.parking')" :value="entity.parking?.code" />
|
||||||
<VnLv v-if="entity.worker" :label="t('shelving.summary.worker')">
|
<VnLv v-if="entity.worker" :label="t('globals.worker')">
|
||||||
<template #value>
|
<template #value>
|
||||||
<VnUserLink
|
<VnUserLink
|
||||||
:name="entity.worker?.user?.nickname"
|
:name="entity.worker?.user?.nickname"
|
||||||
|
|
|
@ -58,7 +58,7 @@ const onSave = (shelving, newShelving) => {
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInput
|
<VnInput
|
||||||
v-model="data.code"
|
v-model="data.code"
|
||||||
:label="t('shelving.basicData.code')"
|
:label="t('globals.code')"
|
||||||
:rules="validate('Shelving.code')"
|
:rules="validate('Shelving.code')"
|
||||||
/>
|
/>
|
||||||
<VnSelect
|
<VnSelect
|
||||||
|
@ -68,7 +68,7 @@ const onSave = (shelving, newShelving) => {
|
||||||
option-label="code"
|
option-label="code"
|
||||||
:filter-options="['id', 'code']"
|
:filter-options="['id', 'code']"
|
||||||
:fields="['id', 'code']"
|
:fields="['id', 'code']"
|
||||||
:label="t('shelving.basicData.parking')"
|
:label="t('shelving.list.parking')"
|
||||||
:rules="validate('Shelving.parkingFk')"
|
:rules="validate('Shelving.parkingFk')"
|
||||||
/>
|
/>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
|
@ -76,12 +76,12 @@ const onSave = (shelving, newShelving) => {
|
||||||
<VnInput
|
<VnInput
|
||||||
v-model="data.priority"
|
v-model="data.priority"
|
||||||
type="number"
|
type="number"
|
||||||
:label="t('shelving.basicData.priority')"
|
:label="t('shelving.list.priority')"
|
||||||
:rules="validate('Shelving.priority')"
|
:rules="validate('Shelving.priority')"
|
||||||
/>
|
/>
|
||||||
<QCheckbox
|
<QCheckbox
|
||||||
v-model="data.isRecyclable"
|
v-model="data.isRecyclable"
|
||||||
:label="t('shelving.basicData.recyclable')"
|
:label="t('shelving.summary.recyclable')"
|
||||||
:rules="validate('Shelving.isRecyclable')"
|
:rules="validate('Shelving.isRecyclable')"
|
||||||
/>
|
/>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
|
|
|
@ -54,16 +54,13 @@ const filter = {
|
||||||
{{ t('globals.pageTitles.basicData') }}
|
{{ t('globals.pageTitles.basicData') }}
|
||||||
<QIcon name="open_in_new" />
|
<QIcon name="open_in_new" />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<VnLv :label="t('shelving.summary.code')" :value="entity.code" />
|
<VnLv :label="t('globals.code')" :value="entity.code" />
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('shelving.summary.parking')"
|
:label="t('shelving.list.parking')"
|
||||||
:value="entity.parking?.code"
|
:value="entity.parking?.code"
|
||||||
/>
|
/>
|
||||||
<VnLv
|
<VnLv :label="t('shelving.list.priority')" :value="entity.priority" />
|
||||||
:label="t('shelving.summary.priority')"
|
<VnLv v-if="entity.worker" :label="t('globals.worker')">
|
||||||
:value="entity.priority"
|
|
||||||
/>
|
|
||||||
<VnLv v-if="entity.worker" :label="t('shelving.summary.worker')">
|
|
||||||
<template #value>
|
<template #value>
|
||||||
<VnUserLink
|
<VnUserLink
|
||||||
:name="entity.worker?.user?.nickname"
|
:name="entity.worker?.user?.nickname"
|
||||||
|
|
|
@ -69,16 +69,13 @@ const redirectToUpdateView = (addressData) => {
|
||||||
@click="redirectToUpdateView(row)"
|
@click="redirectToUpdateView(row)"
|
||||||
>
|
>
|
||||||
<template #list-items>
|
<template #list-items>
|
||||||
|
<VnLv :label="t('globals.street')" :value="row.street" />
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('supplier.addresses.street')"
|
:label="t('globals.postcode')"
|
||||||
:value="row.street"
|
|
||||||
/>
|
|
||||||
<VnLv
|
|
||||||
:label="t('supplier.addresses.postcode')"
|
|
||||||
:value="`${row.postalCode} - ${row.city}, ${row.province.name}`"
|
:value="`${row.postalCode} - ${row.city}, ${row.province.name}`"
|
||||||
/>
|
/>
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('supplier.addresses.phone')"
|
:label="t('globals.phone')"
|
||||||
:value="`${row.phone}, ${row.mobile}`"
|
:value="`${row.phone}, ${row.mobile}`"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -72,14 +72,8 @@ function handleLocation(data, location) {
|
||||||
>
|
>
|
||||||
<template #form="{ data, validate }">
|
<template #form="{ data, validate }">
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInput
|
<VnInput v-model="data.nickname" :label="t('globals.name')" />
|
||||||
v-model="data.nickname"
|
<VnInput v-model="data.street" :label="t('globals.street')" />
|
||||||
:label="t('supplier.addresses.name')"
|
|
||||||
/>
|
|
||||||
<VnInput
|
|
||||||
v-model="data.street"
|
|
||||||
:label="t('supplier.addresses.street')"
|
|
||||||
/>
|
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnLocation
|
<VnLocation
|
||||||
|
@ -101,14 +95,8 @@ function handleLocation(data, location) {
|
||||||
</VnLocation>
|
</VnLocation>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInput
|
<VnInput v-model="data.phone" :label="t('globals.phone')" />
|
||||||
v-model="data.phone"
|
<VnInput v-model="data.mobile" :label="t('globals.mobile')" />
|
||||||
:label="t('supplier.addresses.phone')"
|
|
||||||
/>
|
|
||||||
<VnInput
|
|
||||||
v-model="data.mobile"
|
|
||||||
:label="t('supplier.addresses.mobile')"
|
|
||||||
/>
|
|
||||||
</VnRow>
|
</VnRow>
|
||||||
</template>
|
</template>
|
||||||
</FormModel>
|
</FormModel>
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref } from 'vue';
|
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import FormModel from 'components/FormModel.vue';
|
import FormModel from 'components/FormModel.vue';
|
||||||
|
@ -9,8 +8,11 @@ import VnSelect from 'src/components/common/VnSelect.vue';
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
const companySizes = [
|
||||||
const workersOptions = ref([]);
|
{ id: 'small', name: t('globals.small'), size: '1-5' },
|
||||||
|
{ id: 'medium', name: t('globals.medium'), size: '6-50' },
|
||||||
|
{ id: 'big', name: t('globals.big'), size: '>50' },
|
||||||
|
];
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<FormModel
|
<FormModel
|
||||||
|
@ -24,18 +26,13 @@ const workersOptions = ref([]);
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<VnInput
|
<VnInput
|
||||||
v-model="data.nickname"
|
v-model="data.nickname"
|
||||||
:label="t('supplier.basicData.alias')"
|
:label="t('globals.alias')"
|
||||||
:rules="validate('supplier.nickname')"
|
:rules="validate('supplier.nickname')"
|
||||||
clearable
|
clearable
|
||||||
/>
|
/>
|
||||||
<VnSelect
|
<VnSelect
|
||||||
:label="t('supplier.basicData.workerFk')"
|
:label="t('supplier.basicData.workerFk')"
|
||||||
v-model="data.workerFk"
|
v-model="data.workerFk"
|
||||||
:options="workersOptions"
|
|
||||||
option-value="id"
|
|
||||||
option-label="name"
|
|
||||||
hide-selected
|
|
||||||
map-options
|
|
||||||
url="Workers/search"
|
url="Workers/search"
|
||||||
sort-by="nickname ASC"
|
sort-by="nickname ASC"
|
||||||
:rules="validate('supplier.workerFk')"
|
:rules="validate('supplier.workerFk')"
|
||||||
|
@ -58,6 +55,24 @@ const workersOptions = ref([]);
|
||||||
</QItem>
|
</QItem>
|
||||||
</template>
|
</template>
|
||||||
</VnSelect>
|
</VnSelect>
|
||||||
|
<VnSelect
|
||||||
|
:label="t('supplier.basicData.size')"
|
||||||
|
v-model="data.companySize"
|
||||||
|
:options="companySizes"
|
||||||
|
sort-by="nickname ASC"
|
||||||
|
:rules="validate('supplier.workerFk')"
|
||||||
|
>
|
||||||
|
<template #option="scope">
|
||||||
|
<QItem v-bind="scope.itemProps">
|
||||||
|
<QItemSection>
|
||||||
|
<QItemLabel>{{ scope.opt?.name }}</QItemLabel>
|
||||||
|
<QItemLabel caption>
|
||||||
|
{{ scope.opt?.size }}
|
||||||
|
</QItemLabel>
|
||||||
|
</QItemSection>
|
||||||
|
</QItem>
|
||||||
|
</template>
|
||||||
|
</VnSelect>
|
||||||
</VnRow>
|
</VnRow>
|
||||||
<VnRow>
|
<VnRow>
|
||||||
<QCheckbox
|
<QCheckbox
|
||||||
|
@ -88,4 +103,5 @@ const workersOptions = ref([]);
|
||||||
<i18n>
|
<i18n>
|
||||||
es:
|
es:
|
||||||
Responsible for approving invoices: Responsable de aprobar las facturas
|
Responsible for approving invoices: Responsable de aprobar las facturas
|
||||||
|
Small(1-5), Medium(6-50), Big(> 50): Pequeño(1-5), Mediano(6-50), Grande(> 50)
|
||||||
</i18n>
|
</i18n>
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue