Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix-front into 8277-createEntryControl
gitea/salix-front/pipeline/pr-dev There was a failure building this commit
Details
gitea/salix-front/pipeline/pr-dev There was a failure building this commit
Details
This commit is contained in:
commit
648d60c81f
|
@ -1,12 +1,22 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { toCurrency } from 'src/filters';
|
import { toCurrency } from 'src/filters';
|
||||||
|
import { getValueFromPath } from 'src/composables/getValueFromPath';
|
||||||
|
|
||||||
defineProps({ row: { type: Object, required: true } });
|
const { row, visibleProblems = null } = defineProps({
|
||||||
|
row: { type: Object, required: true },
|
||||||
|
visibleProblems: { type: Array },
|
||||||
|
});
|
||||||
|
|
||||||
|
function showProblem(problem) {
|
||||||
|
const val = getValueFromPath(row, problem);
|
||||||
|
if (!visibleProblems) return val;
|
||||||
|
return !!(visibleProblems?.includes(problem) && val);
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<span class="q-gutter-x-xs">
|
<span class="q-gutter-x-xs">
|
||||||
<router-link
|
<router-link
|
||||||
v-if="row.claim?.claimFk"
|
v-if="showProblem('claim.claimFk')"
|
||||||
:to="{ name: 'ClaimBasicData', params: { id: row.claim?.claimFk } }"
|
:to="{ name: 'ClaimBasicData', params: { id: row.claim?.claimFk } }"
|
||||||
class="link"
|
class="link"
|
||||||
>
|
>
|
||||||
|
@ -18,7 +28,7 @@ defineProps({ row: { type: Object, required: true } });
|
||||||
</QIcon>
|
</QIcon>
|
||||||
</router-link>
|
</router-link>
|
||||||
<QIcon
|
<QIcon
|
||||||
v-if="row?.isDeleted"
|
v-if="showProblem('isDeleted')"
|
||||||
color="primary"
|
color="primary"
|
||||||
name="vn:deletedTicket"
|
name="vn:deletedTicket"
|
||||||
size="xs"
|
size="xs"
|
||||||
|
@ -29,7 +39,7 @@ defineProps({ row: { type: Object, required: true } });
|
||||||
</QTooltip>
|
</QTooltip>
|
||||||
</QIcon>
|
</QIcon>
|
||||||
<QIcon
|
<QIcon
|
||||||
v-if="row?.hasRisk"
|
v-if="showProblem('hasRisk')"
|
||||||
name="vn:risk"
|
name="vn:risk"
|
||||||
:color="row.hasHighRisk ? 'negative' : 'primary'"
|
:color="row.hasHighRisk ? 'negative' : 'primary'"
|
||||||
size="xs"
|
size="xs"
|
||||||
|
@ -40,51 +50,76 @@ defineProps({ row: { type: Object, required: true } });
|
||||||
</QTooltip>
|
</QTooltip>
|
||||||
</QIcon>
|
</QIcon>
|
||||||
<QIcon
|
<QIcon
|
||||||
v-if="row?.hasComponentLack"
|
v-if="showProblem('hasComponentLack')"
|
||||||
name="vn:components"
|
name="vn:components"
|
||||||
color="primary"
|
color="primary"
|
||||||
size="xs"
|
size="xs"
|
||||||
>
|
>
|
||||||
<QTooltip>{{ $t('salesTicketsTable.componentLack') }}</QTooltip>
|
<QTooltip>{{ $t('salesTicketsTable.componentLack') }}</QTooltip>
|
||||||
</QIcon>
|
</QIcon>
|
||||||
<QIcon v-if="row?.hasItemDelay" color="primary" size="xs" name="vn:hasItemDelay">
|
<QIcon
|
||||||
|
v-if="showProblem('hasItemDelay')"
|
||||||
|
color="primary"
|
||||||
|
size="xs"
|
||||||
|
name="vn:hasItemDelay"
|
||||||
|
>
|
||||||
<QTooltip>
|
<QTooltip>
|
||||||
{{ $t('ticket.summary.hasItemDelay') }}
|
{{ $t('ticket.summary.hasItemDelay') }}
|
||||||
</QTooltip>
|
</QTooltip>
|
||||||
</QIcon>
|
</QIcon>
|
||||||
<QIcon v-if="row?.hasItemLost" color="primary" size="xs" name="vn:hasItemLost">
|
<QIcon
|
||||||
|
v-if="showProblem('hasItemLost')"
|
||||||
|
color="primary"
|
||||||
|
size="xs"
|
||||||
|
name="vn:hasItemLost"
|
||||||
|
>
|
||||||
<QTooltip>
|
<QTooltip>
|
||||||
{{ $t('salesTicketsTable.hasItemLost') }}
|
{{ $t('salesTicketsTable.hasItemLost') }}
|
||||||
</QTooltip>
|
</QTooltip>
|
||||||
</QIcon>
|
</QIcon>
|
||||||
<QIcon
|
<QIcon
|
||||||
v-if="row?.hasItemShortage"
|
v-if="showProblem('hasItemShortage')"
|
||||||
name="vn:unavailable"
|
name="vn:unavailable"
|
||||||
color="primary"
|
color="primary"
|
||||||
size="xs"
|
size="xs"
|
||||||
>
|
>
|
||||||
<QTooltip>{{ $t('salesTicketsTable.notVisible') }}</QTooltip>
|
<QTooltip>{{ $t('salesTicketsTable.notVisible') }}</QTooltip>
|
||||||
</QIcon>
|
</QIcon>
|
||||||
<QIcon v-if="row?.hasRounding" color="primary" name="sync_problem" size="xs">
|
<QIcon
|
||||||
|
v-if="showProblem('hasRounding')"
|
||||||
|
color="primary"
|
||||||
|
name="sync_problem"
|
||||||
|
size="xs"
|
||||||
|
>
|
||||||
<QTooltip>
|
<QTooltip>
|
||||||
{{ $t('ticketList.rounding') }}
|
{{ $t('ticketList.rounding') }}
|
||||||
</QTooltip>
|
</QTooltip>
|
||||||
</QIcon>
|
</QIcon>
|
||||||
<QIcon
|
<QIcon
|
||||||
v-if="row?.hasTicketRequest"
|
v-if="showProblem('hasTicketRequest')"
|
||||||
name="vn:buyrequest"
|
name="vn:buyrequest"
|
||||||
color="primary"
|
color="primary"
|
||||||
size="xs"
|
size="xs"
|
||||||
>
|
>
|
||||||
<QTooltip>{{ $t('salesTicketsTable.purchaseRequest') }}</QTooltip>
|
<QTooltip>{{ $t('salesTicketsTable.purchaseRequest') }}</QTooltip>
|
||||||
</QIcon>
|
</QIcon>
|
||||||
<QIcon v-if="row?.isTaxDataChecked" name="vn:no036" color="primary" size="xs">
|
<QIcon
|
||||||
|
v-if="showProblem('isTaxDataChecked')"
|
||||||
|
name="vn:no036"
|
||||||
|
color="primary"
|
||||||
|
size="xs"
|
||||||
|
>
|
||||||
<QTooltip>{{ $t('salesTicketsTable.noVerifiedData') }}</QTooltip>
|
<QTooltip>{{ $t('salesTicketsTable.noVerifiedData') }}</QTooltip>
|
||||||
</QIcon>
|
</QIcon>
|
||||||
<QIcon v-if="row?.isFreezed" name="vn:frozen" color="primary" size="xs">
|
<QIcon v-if="showProblem('isFreezed')" name="vn:frozen" color="primary" size="xs">
|
||||||
<QTooltip>{{ $t('salesTicketsTable.clientFrozen') }}</QTooltip>
|
<QTooltip>{{ $t('salesTicketsTable.clientFrozen') }}</QTooltip>
|
||||||
</QIcon>
|
</QIcon>
|
||||||
<QIcon v-if="row?.isTooLittle" name="vn:isTooLittle" color="primary" size="xs">
|
<QIcon
|
||||||
|
v-if="showProblem('isTooLittle')"
|
||||||
|
name="vn:isTooLittle"
|
||||||
|
color="primary"
|
||||||
|
size="xs"
|
||||||
|
>
|
||||||
<QTooltip>{{ $t('salesTicketsTable.tooLittle') }}</QTooltip>
|
<QTooltip>{{ $t('salesTicketsTable.tooLittle') }}</QTooltip>
|
||||||
</QIcon>
|
</QIcon>
|
||||||
</span>
|
</span>
|
||||||
|
|
|
@ -1,65 +1,63 @@
|
||||||
import { vi, describe, expect, it, beforeEach, afterEach } from 'vitest';
|
import { vi, describe, expect, it, beforeEach, beforeAll, afterEach } from 'vitest';
|
||||||
import { createWrapper } from 'app/test/vitest/helper';
|
import { createWrapper } from 'app/test/vitest/helper';
|
||||||
import UserPanel from 'src/components/UserPanel.vue';
|
import UserPanel from 'src/components/UserPanel.vue';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import { useState } from 'src/composables/useState';
|
import { useState } from 'src/composables/useState';
|
||||||
|
|
||||||
vi.mock('src/utils/quasarLang', () => ({
|
|
||||||
default: vi.fn(),
|
|
||||||
}));
|
|
||||||
|
|
||||||
describe('UserPanel', () => {
|
describe('UserPanel', () => {
|
||||||
let wrapper;
|
let wrapper;
|
||||||
let vm;
|
let vm;
|
||||||
let state;
|
let state;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
wrapper = createWrapper(UserPanel, {});
|
wrapper = createWrapper(UserPanel, {});
|
||||||
state = useState();
|
state = useState();
|
||||||
state.setUser({
|
state.setUser({
|
||||||
id: 115,
|
id: 115,
|
||||||
name: 'itmanagement',
|
name: 'itmanagement',
|
||||||
nickname: 'itManagementNick',
|
nickname: 'itManagementNick',
|
||||||
lang: 'en',
|
lang: 'en',
|
||||||
darkMode: false,
|
darkMode: false,
|
||||||
companyFk: 442,
|
companyFk: 442,
|
||||||
warehouseFk: 1,
|
warehouseFk: 1,
|
||||||
|
});
|
||||||
|
wrapper = wrapper.wrapper;
|
||||||
|
vm = wrapper.vm;
|
||||||
});
|
});
|
||||||
wrapper = wrapper.wrapper;
|
|
||||||
vm = wrapper.vm;
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
vi.clearAllMocks();
|
vi.clearAllMocks();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should fetch warehouses data on mounted', async () => {
|
it('should fetch warehouses data on mounted', async () => {
|
||||||
const fetchData = wrapper.findComponent({ name: 'FetchData' });
|
const fetchData = wrapper.findComponent({ name: 'FetchData' });
|
||||||
expect(fetchData.props('url')).toBe('Warehouses');
|
expect(fetchData.props('url')).toBe('Warehouses');
|
||||||
expect(fetchData.props('autoLoad')).toBe(true);
|
expect(fetchData.props('autoLoad')).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should toggle dark mode correctly and update preferences', async () => {
|
it('should toggle dark mode correctly and update preferences', async () => {
|
||||||
await vm.saveDarkMode(true);
|
await vm.saveDarkMode(true);
|
||||||
expect(axios.patch).toHaveBeenCalledWith('/UserConfigs/115', { darkMode: true });
|
expect(axios.patch).toHaveBeenCalledWith('/UserConfigs/115', { darkMode: true });
|
||||||
expect(vm.user.darkMode).toBe(true);
|
expect(vm.user.darkMode).toBe(true);
|
||||||
await vm.updatePreferences();
|
vm.updatePreferences();
|
||||||
expect(vm.darkMode).toBe(true);
|
expect(vm.darkMode).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should change user language and update preferences', async () => {
|
it('should change user language and update preferences', async () => {
|
||||||
const userLanguage = 'es';
|
const userLanguage = 'es';
|
||||||
await vm.saveLanguage(userLanguage);
|
await vm.saveLanguage(userLanguage);
|
||||||
expect(axios.patch).toHaveBeenCalledWith('/VnUsers/115', { lang: userLanguage });
|
expect(axios.patch).toHaveBeenCalledWith('/VnUsers/115', { lang: userLanguage });
|
||||||
expect(vm.user.lang).toBe(userLanguage);
|
expect(vm.user.lang).toBe(userLanguage);
|
||||||
await vm.updatePreferences();
|
vm.updatePreferences();
|
||||||
expect(vm.locale).toBe(userLanguage);
|
expect(vm.locale).toBe(userLanguage);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should update user data', async () => {
|
it('should update user data', async () => {
|
||||||
const key = 'name';
|
const key = 'name';
|
||||||
const value = 'itboss';
|
const value = 'itboss';
|
||||||
await vm.saveUserData(key, value);
|
await vm.saveUserData(key, value);
|
||||||
expect(axios.post).toHaveBeenCalledWith('UserConfigs/setUserConfig', { [key]: value });
|
expect(axios.post).toHaveBeenCalledWith('UserConfigs/setUserConfig', {
|
||||||
});
|
[key]: value,
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
|
@ -20,12 +20,12 @@ const autofillBic = async (iban) => {
|
||||||
|
|
||||||
if (ibanCountry != 'ES') return;
|
if (ibanCountry != 'ES') return;
|
||||||
|
|
||||||
const filter = { where: { id: bankEntityId.value } };
|
const filter = { where: { id: bankEntityId } };
|
||||||
const params = { filter: JSON.stringify(filter) };
|
const params = { filter: JSON.stringify(filter) };
|
||||||
|
|
||||||
const { data } = await axios.get(`BankEntities`, { params });
|
const { data } = await axios.get(`BankEntities`, { params });
|
||||||
|
|
||||||
emit('updateBic', data[0].id);
|
emit('updateBic', data[0]?.id);
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
|
|
|
@ -6,6 +6,7 @@ import { useSummaryDialog } from 'src/composables/useSummaryDialog';
|
||||||
import { useRoute, useRouter } from 'vue-router';
|
import { useRoute, useRouter } from 'vue-router';
|
||||||
import { useClipboard } from 'src/composables/useClipboard';
|
import { useClipboard } from 'src/composables/useClipboard';
|
||||||
import VnMoreOptions from './VnMoreOptions.vue';
|
import VnMoreOptions from './VnMoreOptions.vue';
|
||||||
|
import { getValueFromPath } from 'src/composables/getValueFromPath';
|
||||||
|
|
||||||
const entity = defineModel({ type: Object, default: null });
|
const entity = defineModel({ type: Object, default: null });
|
||||||
const $props = defineProps({
|
const $props = defineProps({
|
||||||
|
@ -56,18 +57,6 @@ const routeName = computed(() => {
|
||||||
return `${routeName}Summary`;
|
return `${routeName}Summary`;
|
||||||
});
|
});
|
||||||
|
|
||||||
function getValueFromPath(path) {
|
|
||||||
if (!path) return;
|
|
||||||
const keys = path.toString().split('.');
|
|
||||||
let current = entity.value;
|
|
||||||
|
|
||||||
for (const key of keys) {
|
|
||||||
if (current[key] === undefined) return undefined;
|
|
||||||
else current = current[key];
|
|
||||||
}
|
|
||||||
return current;
|
|
||||||
}
|
|
||||||
|
|
||||||
function copyIdText(id) {
|
function copyIdText(id) {
|
||||||
copyText(id, {
|
copyText(id, {
|
||||||
component: {
|
component: {
|
||||||
|
@ -170,10 +159,10 @@ const toModule = computed(() => {
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<span
|
<span
|
||||||
v-if="title"
|
v-if="title"
|
||||||
:title="getValueFromPath(title)"
|
:title="getValueFromPath(entity, title)"
|
||||||
:data-cy="`${$attrs['data-cy'] ?? 'vnDescriptor'}_title`"
|
:data-cy="`${$attrs['data-cy'] ?? 'vnDescriptor'}_title`"
|
||||||
>
|
>
|
||||||
{{ getValueFromPath(title) ?? title }}
|
{{ getValueFromPath(entity, title) ?? title }}
|
||||||
</span>
|
</span>
|
||||||
<slot v-else name="description" :entity="entity">
|
<slot v-else name="description" :entity="entity">
|
||||||
<span
|
<span
|
||||||
|
@ -189,7 +178,7 @@ const toModule = computed(() => {
|
||||||
class="subtitle"
|
class="subtitle"
|
||||||
:data-cy="`${$attrs['data-cy'] ?? 'vnDescriptor'}_subtitle`"
|
:data-cy="`${$attrs['data-cy'] ?? 'vnDescriptor'}_subtitle`"
|
||||||
>
|
>
|
||||||
#{{ getValueFromPath(subtitle) ?? entity.id }}
|
#{{ getValueFromPath(entity, subtitle) ?? entity.id }}
|
||||||
</QItemLabel>
|
</QItemLabel>
|
||||||
<QBtn
|
<QBtn
|
||||||
round
|
round
|
||||||
|
|
|
@ -1,60 +0,0 @@
|
||||||
<script setup>
|
|
||||||
import { ref } from 'vue';
|
|
||||||
import { useI18n } from 'vue-i18n';
|
|
||||||
|
|
||||||
const { t } = useI18n();
|
|
||||||
const props = defineProps({
|
|
||||||
usesMana: {
|
|
||||||
type: Boolean,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
manaCode: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
manaVal: {
|
|
||||||
type: String,
|
|
||||||
default: 'mana',
|
|
||||||
},
|
|
||||||
manaLabel: {
|
|
||||||
type: String,
|
|
||||||
default: 'Promotion mana',
|
|
||||||
},
|
|
||||||
manaClaimVal: {
|
|
||||||
type: String,
|
|
||||||
default: 'manaClaim',
|
|
||||||
},
|
|
||||||
claimLabel: {
|
|
||||||
type: String,
|
|
||||||
default: 'Claim mana',
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const manaCode = ref(props.manaCode);
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div class="column q-gutter-y-sm q-mt-sm">
|
|
||||||
<QRadio
|
|
||||||
v-model="manaCode"
|
|
||||||
dense
|
|
||||||
:val="manaVal"
|
|
||||||
:label="t(manaLabel)"
|
|
||||||
:dark="true"
|
|
||||||
class="q-mb-sm"
|
|
||||||
/>
|
|
||||||
<QRadio
|
|
||||||
v-model="manaCode"
|
|
||||||
dense
|
|
||||||
:val="manaClaimVal"
|
|
||||||
:label="t(claimLabel)"
|
|
||||||
:dark="true"
|
|
||||||
class="q-mb-sm"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<i18n>
|
|
||||||
es:
|
|
||||||
Promotion mana: Maná promoción
|
|
||||||
Claim mana: Maná reclamación
|
|
||||||
</i18n>
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
export function getValueFromPath(root, path) {
|
||||||
|
if (!root || !path) return;
|
||||||
|
const keys = path.toString().split('.');
|
||||||
|
let current = root;
|
||||||
|
|
||||||
|
for (const key of keys) {
|
||||||
|
if (current[key] === undefined) return undefined;
|
||||||
|
else current = current[key];
|
||||||
|
}
|
||||||
|
return current;
|
||||||
|
}
|
|
@ -18,6 +18,7 @@ $positive: #c8e484;
|
||||||
$negative: #fb5252;
|
$negative: #fb5252;
|
||||||
$info: #84d0e2;
|
$info: #84d0e2;
|
||||||
$warning: #f4b974;
|
$warning: #f4b974;
|
||||||
|
$neutral: #b0b0b0;
|
||||||
// Pendiente de cuadrar con la base de datos
|
// Pendiente de cuadrar con la base de datos
|
||||||
$success: $positive;
|
$success: $positive;
|
||||||
$alert: $negative;
|
$alert: $negative;
|
||||||
|
@ -51,3 +52,6 @@ $width-xl: 1600px;
|
||||||
.bg-alert {
|
.bg-alert {
|
||||||
background-color: $negative;
|
background-color: $negative;
|
||||||
}
|
}
|
||||||
|
.bg-neutral {
|
||||||
|
background-color: $neutral;
|
||||||
|
}
|
||||||
|
|
|
@ -28,14 +28,8 @@ const entityId = computed(() => {
|
||||||
return $props.id || route.params.id;
|
return $props.id || route.params.id;
|
||||||
});
|
});
|
||||||
|
|
||||||
const STATE_COLOR = {
|
function stateColor(entity) {
|
||||||
pending: 'warning',
|
return entity?.claimState?.classColor;
|
||||||
incomplete: 'info',
|
|
||||||
resolved: 'positive',
|
|
||||||
canceled: 'negative',
|
|
||||||
};
|
|
||||||
function stateColor(code) {
|
|
||||||
return STATE_COLOR[code];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
@ -57,9 +51,8 @@ onMounted(async () => {
|
||||||
<VnLv v-if="entity.claimState" :label="t('claim.state')">
|
<VnLv v-if="entity.claimState" :label="t('claim.state')">
|
||||||
<template #value>
|
<template #value>
|
||||||
<QBadge
|
<QBadge
|
||||||
:color="stateColor(entity.claimState.code)"
|
:color="stateColor(entity)"
|
||||||
text-color="black"
|
style="color: var(--vn-black-text-color)"
|
||||||
dense
|
|
||||||
>
|
>
|
||||||
{{ entity.claimState.description }}
|
{{ entity.claimState.description }}
|
||||||
</QBadge>
|
</QBadge>
|
||||||
|
|
|
@ -108,15 +108,9 @@ const markerLabels = [
|
||||||
{ value: 5, label: t('claim.person') },
|
{ value: 5, label: t('claim.person') },
|
||||||
];
|
];
|
||||||
|
|
||||||
const STATE_COLOR = {
|
|
||||||
pending: 'warning',
|
|
||||||
incomplete: 'info',
|
|
||||||
resolved: 'positive',
|
|
||||||
canceled: 'negative',
|
|
||||||
};
|
|
||||||
|
|
||||||
function stateColor(code) {
|
function stateColor(code) {
|
||||||
return STATE_COLOR[code];
|
const claimState = claimStates.value.find((state) => state.code === code);
|
||||||
|
return claimState?.classColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
const developmentColumns = ref([
|
const developmentColumns = ref([
|
||||||
|
@ -188,7 +182,7 @@ function claimUrl(section) {
|
||||||
<template>
|
<template>
|
||||||
<FetchData
|
<FetchData
|
||||||
url="ClaimStates"
|
url="ClaimStates"
|
||||||
:filter="{ fields: ['id', 'description'] }"
|
:filter="{ fields: ['id', 'description', 'code', 'classColor'] }"
|
||||||
@on-fetch="(data) => (claimStates = data)"
|
@on-fetch="(data) => (claimStates = data)"
|
||||||
auto-load
|
auto-load
|
||||||
/>
|
/>
|
||||||
|
@ -346,17 +340,18 @@ function claimUrl(section) {
|
||||||
<template #body="props">
|
<template #body="props">
|
||||||
<QTr :props="props">
|
<QTr :props="props">
|
||||||
<QTd v-for="col in props.cols" :key="col.name" :props="props">
|
<QTd v-for="col in props.cols" :key="col.name" :props="props">
|
||||||
<span v-if="col.name != 'description'">{{
|
<template v-if="col.name === 'description'">
|
||||||
t(col.value)
|
<span class="link">{{
|
||||||
}}</span>
|
dashIfEmpty(col.field(props.row))
|
||||||
<span class="link" v-if="col.name === 'description'">{{
|
}}</span>
|
||||||
t(col.value)
|
<ItemDescriptorProxy
|
||||||
}}</span>
|
:id="props.row.sale.itemFk"
|
||||||
<ItemDescriptorProxy
|
:sale-fk="props.row.saleFk"
|
||||||
v-if="col.name == 'description'"
|
/>
|
||||||
:id="props.row.sale.itemFk"
|
</template>
|
||||||
:sale-fk="props.row.saleFk"
|
<template v-else>
|
||||||
></ItemDescriptorProxy>
|
{{ dashIfEmpty(col.field(props.row)) }}
|
||||||
|
</template>
|
||||||
</QTd>
|
</QTd>
|
||||||
</QTr>
|
</QTr>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -101,7 +101,10 @@ const columns = computed(() => [
|
||||||
name: 'stateCode',
|
name: 'stateCode',
|
||||||
chip: {
|
chip: {
|
||||||
condition: () => true,
|
condition: () => true,
|
||||||
color: ({ stateCode }) => STATE_COLOR[stateCode] ?? 'bg-grey',
|
color: ({ stateCode }) => {
|
||||||
|
const state = states.value?.find(({ code }) => code === stateCode);
|
||||||
|
return `bg-${state.classColor}`;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
name: 'claimStateFk',
|
name: 'claimStateFk',
|
||||||
|
@ -131,12 +134,6 @@ const columns = computed(() => [
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const STATE_COLOR = {
|
|
||||||
pending: 'bg-warning',
|
|
||||||
loses: 'bg-negative',
|
|
||||||
resolved: 'bg-positive',
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|
|
@ -185,7 +185,7 @@ const sumRisk = ({ clientRisks }) => {
|
||||||
/>
|
/>
|
||||||
<VnLv
|
<VnLv
|
||||||
:label="t('customer.summary.payMethod')"
|
:label="t('customer.summary.payMethod')"
|
||||||
:value="entity.payMethod.name"
|
:value="entity.payMethod?.name"
|
||||||
/>
|
/>
|
||||||
<VnLv :label="t('customer.summary.bankAccount')" :value="entity.iban" />
|
<VnLv :label="t('customer.summary.bankAccount')" :value="entity.iban" />
|
||||||
<VnLv :label="t('customer.summary.dueDay')" :value="entity.dueDay" />
|
<VnLv :label="t('customer.summary.dueDay')" :value="entity.dueDay" />
|
||||||
|
|
|
@ -46,7 +46,7 @@ async function getClaims() {
|
||||||
originalTicket.value = data[0]?.originalTicketFk;
|
originalTicket.value = data[0]?.originalTicketFk;
|
||||||
}
|
}
|
||||||
async function getProblems() {
|
async function getProblems() {
|
||||||
const { data } = await axios.get(`Tickets/${entityId.value}/getTicketProblems`);
|
const { data } = await axios.get(`Tickets/getTicketProblems`, {params: { ids: [entityId.value] }});
|
||||||
if (!data) return;
|
if (!data) return;
|
||||||
problems.value = data[0];
|
problems.value = data[0];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,6 @@ import { useI18n } from 'vue-i18n';
|
||||||
import { computed, ref } from 'vue';
|
import { computed, ref } from 'vue';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
import { toCurrency } from 'src/filters';
|
import { toCurrency } from 'src/filters';
|
||||||
import VnUsesMana from 'components/ui/VnUsesMana.vue';
|
|
||||||
|
|
||||||
const $props = defineProps({
|
const $props = defineProps({
|
||||||
newPrice: {
|
newPrice: {
|
||||||
|
@ -15,23 +14,36 @@ const $props = defineProps({
|
||||||
type: Object,
|
type: Object,
|
||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
|
componentId: {
|
||||||
|
type: Number,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(['save', 'cancel', 'update:componentId']);
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const mana = ref(null);
|
const mana = ref(null);
|
||||||
const usesMana = ref(false);
|
const usesMana = ref([]);
|
||||||
|
|
||||||
const emit = defineEmits(['save', 'cancel']);
|
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const QPopupProxyRef = ref(null);
|
const QPopupProxyRef = ref(null);
|
||||||
const manaCode = ref($props.manaCode);
|
|
||||||
|
const componentId = computed({
|
||||||
|
get: () => $props.componentId,
|
||||||
|
set: (val) => emit('update:componentId', val),
|
||||||
|
});
|
||||||
|
|
||||||
const save = (sale = $props.sale) => {
|
const save = (sale = $props.sale) => {
|
||||||
emit('save', sale);
|
emit('save', sale);
|
||||||
QPopupProxyRef.value.hide();
|
QPopupProxyRef.value.hide();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const cancel = () => {
|
||||||
|
emit('cancel');
|
||||||
|
QPopupProxyRef.value.hide();
|
||||||
|
};
|
||||||
|
|
||||||
const getMana = async () => {
|
const getMana = async () => {
|
||||||
const { data } = await axios.get(`Tickets/${route.params.id}/getDepartmentMana`);
|
const { data } = await axios.get(`Tickets/${route.params.id}/getDepartmentMana`);
|
||||||
mana.value = data;
|
mana.value = data;
|
||||||
|
@ -39,15 +51,12 @@ const getMana = async () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const getUsesMana = async () => {
|
const getUsesMana = async () => {
|
||||||
const { data } = await axios.get('Sales/usesMana');
|
const { data } = await axios.get('Sales/getComponents');
|
||||||
usesMana.value = data;
|
usesMana.value = data;
|
||||||
};
|
};
|
||||||
|
|
||||||
const cancel = () => {
|
|
||||||
emit('cancel');
|
|
||||||
QPopupProxyRef.value.hide();
|
|
||||||
};
|
|
||||||
const hasMana = computed(() => typeof mana.value === 'number');
|
const hasMana = computed(() => typeof mana.value === 'number');
|
||||||
|
|
||||||
defineExpose({ save });
|
defineExpose({ save });
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -59,17 +68,29 @@ defineExpose({ save });
|
||||||
>
|
>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="header">Mana: {{ toCurrency(mana) }}</div>
|
<div class="header">Mana: {{ toCurrency(mana) }}</div>
|
||||||
<QSpinner v-if="!hasMana" color="primary" size="md" />
|
|
||||||
|
<QSpinner v-if="!usesMana.length" color="primary" />
|
||||||
|
|
||||||
<div class="q-pa-md" v-else>
|
<div class="q-pa-md" v-else>
|
||||||
<slot :popup="QPopupProxyRef" />
|
<slot :popup="QPopupProxyRef" />
|
||||||
<div v-if="usesMana" class="column q-gutter-y-sm q-mt-sm">
|
|
||||||
<VnUsesMana :mana-code="manaCode" />
|
<div v-if="usesMana.length" class="column q-gutter-y-sm q-mt-sm">
|
||||||
|
<QRadio
|
||||||
|
v-for="(item, index) in usesMana"
|
||||||
|
:key="index"
|
||||||
|
v-model="componentId"
|
||||||
|
:val="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
dense
|
||||||
|
:dark="true"
|
||||||
|
class="q-mb-sm"
|
||||||
|
:data-cy="`componentOption-${item.id}`"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="newPrice" class="column items-center q-mt-lg">
|
<div v-if="newPrice" class="column items-center q-mt-lg">
|
||||||
<span class="text-primary">{{ t('New price') }}</span>
|
<span class="text-primary">{{ t('New price') }}</span>
|
||||||
<span class="text-subtitle1">
|
<span class="text-subtitle1">{{ toCurrency(newPrice) }}</span>
|
||||||
{{ toCurrency($props.newPrice) }}
|
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -77,7 +98,6 @@ defineExpose({ save });
|
||||||
<QBtn
|
<QBtn
|
||||||
color="primary"
|
color="primary"
|
||||||
class="no-border-radius"
|
class="no-border-radius"
|
||||||
dense
|
|
||||||
style="width: 50%"
|
style="width: 50%"
|
||||||
@click="cancel()"
|
@click="cancel()"
|
||||||
>
|
>
|
||||||
|
@ -86,7 +106,6 @@ defineExpose({ save });
|
||||||
<QBtn
|
<QBtn
|
||||||
color="primary"
|
color="primary"
|
||||||
class="no-border-radius"
|
class="no-border-radius"
|
||||||
dense
|
|
||||||
style="width: 50%"
|
style="width: 50%"
|
||||||
@click="save()"
|
@click="save()"
|
||||||
data-cy="saveManaBtn"
|
data-cy="saveManaBtn"
|
||||||
|
@ -116,8 +135,3 @@ defineExpose({ save });
|
||||||
min-width: 230px;
|
min-width: 230px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<i18n>
|
|
||||||
es:
|
|
||||||
New price: Nuevo precio
|
|
||||||
</i18n>
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ const isTicketEditable = ref(false);
|
||||||
const sales = ref([]);
|
const sales = ref([]);
|
||||||
const editableStatesOptions = ref([]);
|
const editableStatesOptions = ref([]);
|
||||||
const selectedSales = ref([]);
|
const selectedSales = ref([]);
|
||||||
const manaCode = ref('mana');
|
const componentId = ref(null);
|
||||||
const ticketState = computed(() => store.data?.ticketState?.state?.code);
|
const ticketState = computed(() => store.data?.ticketState?.state?.code);
|
||||||
const transfer = ref({
|
const transfer = ref({
|
||||||
lastActiveTickets: [],
|
lastActiveTickets: [],
|
||||||
|
@ -187,7 +187,7 @@ const getRowUpdateInputEvents = (sale) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const resetChanges = async () => {
|
const resetChanges = async () => {
|
||||||
arrayData.fetch({ append: false });
|
await arrayData.fetch({ append: false });
|
||||||
tableRef.value.CrudModelRef.hasChanges = false;
|
tableRef.value.CrudModelRef.hasChanges = false;
|
||||||
await tableRef.value.reload();
|
await tableRef.value.reload();
|
||||||
|
|
||||||
|
@ -308,14 +308,15 @@ const changePrice = async (sale) => {
|
||||||
if (newPrice != null && newPrice != sale.price) {
|
if (newPrice != null && newPrice != sale.price) {
|
||||||
if (await isSalePrepared(sale)) {
|
if (await isSalePrepared(sale)) {
|
||||||
await confirmUpdate(() => updatePrice(sale, newPrice));
|
await confirmUpdate(() => updatePrice(sale, newPrice));
|
||||||
} else updatePrice(sale, newPrice);
|
} else await updatePrice(sale, newPrice);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const updatePrice = async (sale, newPrice) => {
|
const updatePrice = async (sale, newPrice) => {
|
||||||
try {
|
try {
|
||||||
await axios.post(`Sales/${sale.id}/updatePrice`, { newPrice });
|
await axios.post(`Sales/${sale.id}/updatePrice`, {
|
||||||
sale.price = newPrice;
|
newPrice: newPrice,
|
||||||
edit.value = { ...DEFAULT_EDIT };
|
componentId: componentId.value,
|
||||||
|
});
|
||||||
notify('globals.dataSaved', 'positive');
|
notify('globals.dataSaved', 'positive');
|
||||||
resetChanges();
|
resetChanges();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -327,28 +328,31 @@ const changeDiscount = async (sale) => {
|
||||||
const newDiscount = edit.value.discount;
|
const newDiscount = edit.value.discount;
|
||||||
if (newDiscount != null && newDiscount != sale.discount) {
|
if (newDiscount != null && newDiscount != sale.discount) {
|
||||||
if (await isSalePrepared(sale))
|
if (await isSalePrepared(sale))
|
||||||
await confirmUpdate(() => updateDiscount([sale], newDiscount));
|
await confirmUpdate(() =>
|
||||||
else await updateDiscount([sale], newDiscount);
|
updateDiscount([sale], newDiscount, componentId.value),
|
||||||
|
);
|
||||||
|
else await updateDiscount([sale], newDiscount, componentId.value);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const updateDiscounts = async (sales, newDiscount) => {
|
const updateDiscounts = async (sales, newDiscount, componentId) => {
|
||||||
const salesTracking = await fetchSalesTracking();
|
const salesTracking = await fetchSalesTracking();
|
||||||
|
|
||||||
const someSaleIsPrepared = salesTracking.some((sale) =>
|
const someSaleIsPrepared = salesTracking.some((sale) =>
|
||||||
matchSale(salesTracking, sale),
|
matchSale(salesTracking, sale),
|
||||||
);
|
);
|
||||||
if (someSaleIsPrepared) await confirmUpdate(() => updateDiscount(sales, newDiscount));
|
if (someSaleIsPrepared)
|
||||||
else updateDiscount(sales, newDiscount);
|
await confirmUpdate(() => updateDiscount(sales, newDiscount, componentId));
|
||||||
|
else updateDiscount(sales, newDiscount, componentId);
|
||||||
};
|
};
|
||||||
|
|
||||||
const updateDiscount = async (sales, newDiscount = 0) => {
|
const updateDiscount = async (sales, newDiscount, componentId) => {
|
||||||
try {
|
try {
|
||||||
const salesIds = sales.map(({ id }) => id);
|
const salesIds = sales.map(({ id }) => id);
|
||||||
const params = {
|
const params = {
|
||||||
salesIds,
|
salesIds,
|
||||||
newDiscount,
|
newDiscount: newDiscount ?? 0,
|
||||||
manaCode: manaCode.value,
|
componentId,
|
||||||
};
|
};
|
||||||
await axios.post(`Tickets/${route.params.id}/updateDiscount`, params);
|
await axios.post(`Tickets/${route.params.id}/updateDiscount`, params);
|
||||||
notify('globals.dataSaved', 'positive');
|
notify('globals.dataSaved', 'positive');
|
||||||
|
@ -821,10 +825,11 @@ watch(
|
||||||
ref="editPriceProxyRef"
|
ref="editPriceProxyRef"
|
||||||
:sale="row"
|
:sale="row"
|
||||||
:new-price="getNewPrice"
|
:new-price="getNewPrice"
|
||||||
|
v-model:component-id="componentId"
|
||||||
@save="changePrice"
|
@save="changePrice"
|
||||||
>
|
>
|
||||||
<VnInput
|
<VnInput
|
||||||
@keyup.enter.stop="() => editManaProxyRef.save(row)"
|
@keyup.enter.stop="() => editPriceProxyRef.save(row)"
|
||||||
v-model.number="edit.price"
|
v-model.number="edit.price"
|
||||||
:label="t('basicData.price')"
|
:label="t('basicData.price')"
|
||||||
type="number"
|
type="number"
|
||||||
|
@ -843,7 +848,7 @@ watch(
|
||||||
ref="editManaProxyRef"
|
ref="editManaProxyRef"
|
||||||
:sale="row"
|
:sale="row"
|
||||||
:new-price="getNewPrice"
|
:new-price="getNewPrice"
|
||||||
:mana-code="manaCode"
|
v-model:component-id="componentId"
|
||||||
@save="changeDiscount"
|
@save="changeDiscount"
|
||||||
>
|
>
|
||||||
<VnInput
|
<VnInput
|
||||||
|
|
|
@ -47,6 +47,7 @@ const { notify } = useNotify();
|
||||||
const acl = useAcl();
|
const acl = useAcl();
|
||||||
const btnDropdownRef = ref(null);
|
const btnDropdownRef = ref(null);
|
||||||
const editManaProxyRef = ref(null);
|
const editManaProxyRef = ref(null);
|
||||||
|
const componentId = ref(null);
|
||||||
const { openConfirmationModal } = useVnConfirm();
|
const { openConfirmationModal } = useVnConfirm();
|
||||||
|
|
||||||
const newDiscount = ref(null);
|
const newDiscount = ref(null);
|
||||||
|
@ -112,7 +113,7 @@ const changeMultipleDiscount = () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
if (newDiscount.value != null && hasChanges)
|
if (newDiscount.value != null && hasChanges)
|
||||||
emit('updateDiscounts', props.sales, newDiscount.value);
|
emit('updateDiscounts', props.sales, newDiscount.value, componentId.value);
|
||||||
btnDropdownRef.value.hide();
|
btnDropdownRef.value.hide();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -206,6 +207,7 @@ const createRefund = async (withWarehouse) => {
|
||||||
ref="editManaProxyRef"
|
ref="editManaProxyRef"
|
||||||
:sale="row"
|
:sale="row"
|
||||||
@save="changeMultipleDiscount"
|
@save="changeMultipleDiscount"
|
||||||
|
v-model:component-id="componentId"
|
||||||
>
|
>
|
||||||
<VnInput
|
<VnInput
|
||||||
autofocus
|
autofocus
|
||||||
|
|
|
@ -14,6 +14,8 @@ import { useState } from 'src/composables/useState';
|
||||||
import { toDateFormat } from 'src/filters/date.js';
|
import { toDateFormat } from 'src/filters/date.js';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import VnTable from 'src/components/VnTable/VnTable.vue';
|
import VnTable from 'src/components/VnTable/VnTable.vue';
|
||||||
|
import { QTable } from 'quasar';
|
||||||
|
import TicketProblems from 'src/components/TicketProblems.vue';
|
||||||
|
|
||||||
const state = useState();
|
const state = useState();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
@ -27,6 +29,16 @@ const selectedTickets = ref([]);
|
||||||
const vnTableRef = ref({});
|
const vnTableRef = ref({});
|
||||||
const originElRef = ref(null);
|
const originElRef = ref(null);
|
||||||
const destinationElRef = ref(null);
|
const destinationElRef = ref(null);
|
||||||
|
const actions = {
|
||||||
|
advance: {
|
||||||
|
title: t('advanceTickets.advanceTickets'),
|
||||||
|
cb: moveTicketsAdvance,
|
||||||
|
},
|
||||||
|
advanceWithoutNegative: {
|
||||||
|
title: t('advanceTickets.advanceTicketsWithoutNegatives'),
|
||||||
|
cb: splitTickets,
|
||||||
|
},
|
||||||
|
};
|
||||||
let today = Date.vnNew().toISOString();
|
let today = Date.vnNew().toISOString();
|
||||||
const tomorrow = new Date(today);
|
const tomorrow = new Date(today);
|
||||||
tomorrow.setDate(tomorrow.getDate() + 1);
|
tomorrow.setDate(tomorrow.getDate() + 1);
|
||||||
|
@ -78,6 +90,15 @@ const ticketColumns = computed(() => [
|
||||||
headerClass: 'horizontal-separator',
|
headerClass: 'horizontal-separator',
|
||||||
hidden: true,
|
hidden: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: t('globals.agency'),
|
||||||
|
name: 'agency',
|
||||||
|
field: 'agency',
|
||||||
|
align: 'left',
|
||||||
|
sortable: true,
|
||||||
|
headerClass: 'horizontal-separator',
|
||||||
|
columnFilter: false,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: t('advanceTickets.preparation'),
|
label: t('advanceTickets.preparation'),
|
||||||
name: 'preparation',
|
name: 'preparation',
|
||||||
|
@ -85,7 +106,6 @@ const ticketColumns = computed(() => [
|
||||||
align: 'left',
|
align: 'left',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
headerClass: 'horizontal-separator',
|
headerClass: 'horizontal-separator',
|
||||||
columnFilter: false,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -110,10 +130,17 @@ const ticketColumns = computed(() => [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: t('advanceTickets.futureId'),
|
label: '',
|
||||||
name: 'futureId',
|
name: 'problems',
|
||||||
headerClass: 'vertical-separator horizontal-separator',
|
headerClass: 'vertical-separator horizontal-separator',
|
||||||
columnClass: 'vertical-separator',
|
columnClass: 'vertical-separator',
|
||||||
|
hidden: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('advanceTickets.futureId'),
|
||||||
|
name: 'futureId',
|
||||||
|
headerClass: 'horizontal-separator',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -242,7 +269,7 @@ const requestComponentUpdate = async (ticket, isWithoutNegatives) => {
|
||||||
return { query, params };
|
return { query, params };
|
||||||
};
|
};
|
||||||
|
|
||||||
const moveTicketsAdvance = async () => {
|
async function moveTicketsAdvance() {
|
||||||
let ticketsToMove = [];
|
let ticketsToMove = [];
|
||||||
for (const ticket of selectedTickets.value) {
|
for (const ticket of selectedTickets.value) {
|
||||||
if (!ticket.id) {
|
if (!ticket.id) {
|
||||||
|
@ -267,7 +294,7 @@ const moveTicketsAdvance = async () => {
|
||||||
vnTableRef.value.reload();
|
vnTableRef.value.reload();
|
||||||
selectedTickets.value = [];
|
selectedTickets.value = [];
|
||||||
if (ticketsToMove.length) notify(t('advanceTickets.moveTicketSuccess'), 'positive');
|
if (ticketsToMove.length) notify(t('advanceTickets.moveTicketSuccess'), 'positive');
|
||||||
};
|
}
|
||||||
|
|
||||||
const progressLength = ref(0);
|
const progressLength = ref(0);
|
||||||
const progressPercentage = computed(() => {
|
const progressPercentage = computed(() => {
|
||||||
|
@ -290,7 +317,7 @@ const progressAdd = () => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const splitTickets = async () => {
|
async function splitTickets() {
|
||||||
try {
|
try {
|
||||||
showProgressDialog.value = true;
|
showProgressDialog.value = true;
|
||||||
for (const ticket of selectedTickets.value) {
|
for (const ticket of selectedTickets.value) {
|
||||||
|
@ -310,7 +337,7 @@ const splitTickets = async () => {
|
||||||
} finally {
|
} finally {
|
||||||
vnTableRef.value.reload();
|
vnTableRef.value.reload();
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
const resetProgressData = () => {
|
const resetProgressData = () => {
|
||||||
if (cancelProgress.value) cancelProgress.value = false;
|
if (cancelProgress.value) cancelProgress.value = false;
|
||||||
|
@ -326,6 +353,32 @@ const handleCloseProgressDialog = () => {
|
||||||
|
|
||||||
const handleCancelProgress = () => (cancelProgress.value = true);
|
const handleCancelProgress = () => (cancelProgress.value = true);
|
||||||
|
|
||||||
|
const confirmAction = (action) => {
|
||||||
|
openConfirmationModal(actions[action].title, false, actions[action].cb, null, {
|
||||||
|
component: QTable,
|
||||||
|
props: {
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('advanceTickets.destination'),
|
||||||
|
name: 'id',
|
||||||
|
field: (row) => row.id,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('advanceTickets.origin'),
|
||||||
|
name: 'futureId',
|
||||||
|
field: (row) => row.futureId,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
rows: selectedTickets.value,
|
||||||
|
class: 'full-width',
|
||||||
|
dense: true,
|
||||||
|
flat: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => vnTableRef.value.tableRef?.$el,
|
() => vnTableRef.value.tableRef?.$el,
|
||||||
($el) => {
|
($el) => {
|
||||||
|
@ -399,15 +452,7 @@ watch(
|
||||||
color="primary"
|
color="primary"
|
||||||
class="q-mr-sm"
|
class="q-mr-sm"
|
||||||
:disable="!selectedTickets.length"
|
:disable="!selectedTickets.length"
|
||||||
@click.stop="
|
@click.stop="confirmAction('advance')"
|
||||||
openConfirmationModal(
|
|
||||||
t('advanceTickets.advanceTicketTitle'),
|
|
||||||
t(`advanceTickets.advanceTitleSubtitle`, {
|
|
||||||
selectedTickets: selectedTickets.length,
|
|
||||||
}),
|
|
||||||
moveTicketsAdvance,
|
|
||||||
)
|
|
||||||
"
|
|
||||||
>
|
>
|
||||||
<QTooltip>
|
<QTooltip>
|
||||||
{{ t('advanceTickets.advanceTickets') }}
|
{{ t('advanceTickets.advanceTickets') }}
|
||||||
|
@ -417,15 +462,7 @@ watch(
|
||||||
icon="alt_route"
|
icon="alt_route"
|
||||||
color="primary"
|
color="primary"
|
||||||
:disable="!selectedTickets.length"
|
:disable="!selectedTickets.length"
|
||||||
@click.stop="
|
@click.stop="confirmAction('advanceWithoutNegative')"
|
||||||
openConfirmationModal(
|
|
||||||
t('advanceTickets.advanceWithoutNegativeTitle'),
|
|
||||||
t(`advanceTickets.advanceWithoutNegativeSubtitle`, {
|
|
||||||
selectedTickets: selectedTickets.length,
|
|
||||||
}),
|
|
||||||
splitTickets,
|
|
||||||
)
|
|
||||||
"
|
|
||||||
>
|
>
|
||||||
<QTooltip>
|
<QTooltip>
|
||||||
{{ t('advanceTickets.advanceTicketsWithoutNegatives') }}
|
{{ t('advanceTickets.advanceTicketsWithoutNegatives') }}
|
||||||
|
@ -454,9 +491,9 @@ watch(
|
||||||
}"
|
}"
|
||||||
v-model:selected="selectedTickets"
|
v-model:selected="selectedTickets"
|
||||||
:pagination="{ rowsPerPage: 0 }"
|
:pagination="{ rowsPerPage: 0 }"
|
||||||
:no-data-label="t('globals.noResults')"
|
:no-data-label="$t('globals.noResults')"
|
||||||
:right-search="false"
|
:right-search="false"
|
||||||
:order="['futureTotalWithVat ASC']"
|
:order="['futureTotalWithVat ASC']"
|
||||||
auto-load
|
auto-load
|
||||||
:disable-option="{ card: true }"
|
:disable-option="{ card: true }"
|
||||||
>
|
>
|
||||||
|
@ -522,6 +559,9 @@ watch(
|
||||||
{{ toCurrency(row.totalWithVat || 0) }}
|
{{ toCurrency(row.totalWithVat || 0) }}
|
||||||
</QBadge>
|
</QBadge>
|
||||||
</template>
|
</template>
|
||||||
|
<template #column-problems="{ row }">
|
||||||
|
<TicketProblems :row="row.problems" :visible-problems="['hasRisk']" />
|
||||||
|
</template>
|
||||||
<template #column-futureId="{ row }">
|
<template #column-futureId="{ row }">
|
||||||
<QBtn flat class="link" dense>
|
<QBtn flat class="link" dense>
|
||||||
{{ row.futureId }}
|
{{ row.futureId }}
|
||||||
|
|
|
@ -10,7 +10,7 @@ import VnInputDate from 'src/components/common/VnInputDate.vue';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import { onMounted } from 'vue';
|
import { onMounted } from 'vue';
|
||||||
import VnInputNumber from 'src/components/common/VnInputNumber.vue';
|
import VnInputNumber from 'src/components/common/VnInputNumber.vue';
|
||||||
|
import VnCheckbox from 'src/components/common/VnCheckbox.vue';
|
||||||
const { t, te } = useI18n();
|
const { t, te } = useI18n();
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
dataKey: {
|
dataKey: {
|
||||||
|
@ -122,18 +122,20 @@ onMounted(async () => await getItemPackingTypes());
|
||||||
<QItemSection>
|
<QItemSection>
|
||||||
<VnInputNumber
|
<VnInputNumber
|
||||||
v-model="params.scopeDays"
|
v-model="params.scopeDays"
|
||||||
:label="t('Days onward')"
|
:label="t('globals.daysOnward')"
|
||||||
filled
|
filled
|
||||||
|
:step="0"
|
||||||
/>
|
/>
|
||||||
</QItemSection>
|
</QItemSection>
|
||||||
</QItem>
|
</QItem>
|
||||||
<QItem>
|
<QItem>
|
||||||
<QItemSection>
|
<QItemSection>
|
||||||
<QCheckbox
|
<VnCheckbox
|
||||||
:label="t('params.isFullMovable')"
|
:label="t('params.isFullMovable')"
|
||||||
v-model="params.isFullMovable"
|
v-model="params.isFullMovable"
|
||||||
toggle-indeterminate
|
toggle-indeterminate
|
||||||
@update:model-value="searchFn()"
|
@update:model-value="searchFn()"
|
||||||
|
dense
|
||||||
/>
|
/>
|
||||||
</QItemSection>
|
</QItemSection>
|
||||||
</QItem>
|
</QItem>
|
||||||
|
@ -166,11 +168,12 @@ onMounted(async () => await getItemPackingTypes());
|
||||||
</QItem>
|
</QItem>
|
||||||
<QItem>
|
<QItem>
|
||||||
<QItemSection>
|
<QItemSection>
|
||||||
<QCheckbox
|
<VnCheckbox
|
||||||
toggle-indeterminate
|
toggle-indeterminate
|
||||||
label="only with destination"
|
:label="t('params.onlyWithDestination')"
|
||||||
v-model="params.onlyWithDestination"
|
v-model="params.onlyWithDestination"
|
||||||
@update:model-value="searchFn()"
|
@update:model-value="searchFn()"
|
||||||
|
dense
|
||||||
/>
|
/>
|
||||||
</QItemSection>
|
</QItemSection>
|
||||||
</QItem>
|
</QItem>
|
||||||
|
@ -194,8 +197,8 @@ es:
|
||||||
Vertical: Vertical
|
Vertical: Vertical
|
||||||
iptInfo: Encajado
|
iptInfo: Encajado
|
||||||
params:
|
params:
|
||||||
dateFuture: fecha origen
|
dateFuture: F. origen
|
||||||
dateToAdvance: Fecha destino
|
dateToAdvance: F. destino
|
||||||
futureIpt: IPT Origen
|
futureIpt: IPT Origen
|
||||||
ipt: IPT destino
|
ipt: IPT destino
|
||||||
isFullMovable: 100% movible
|
isFullMovable: 100% movible
|
||||||
|
|
|
@ -113,7 +113,7 @@ const ticketCard = {
|
||||||
name: 'TicketExpedition',
|
name: 'TicketExpedition',
|
||||||
meta: {
|
meta: {
|
||||||
title: 'expedition',
|
title: 'expedition',
|
||||||
icon: 'vn:package',
|
icon: 'view_in_ar',
|
||||||
},
|
},
|
||||||
component: () => import('src/pages/Ticket/Card/TicketExpedition.vue'),
|
component: () => import('src/pages/Ticket/Card/TicketExpedition.vue'),
|
||||||
},
|
},
|
||||||
|
@ -168,7 +168,7 @@ const ticketCard = {
|
||||||
name: 'TicketBoxing',
|
name: 'TicketBoxing',
|
||||||
meta: {
|
meta: {
|
||||||
title: 'boxing',
|
title: 'boxing',
|
||||||
icon: 'view_in_ar',
|
icon: 'videocam',
|
||||||
},
|
},
|
||||||
component: () => import('src/pages/Ticket/Card/TicketBoxing.vue'),
|
component: () => import('src/pages/Ticket/Card/TicketBoxing.vue'),
|
||||||
},
|
},
|
||||||
|
|
|
@ -6,7 +6,6 @@ describe.skip('ClaimAction', () => {
|
||||||
const destinationRow = '.q-item__section > .q-field';
|
const destinationRow = '.q-item__section > .q-field';
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/claim/${claimId}/action`);
|
cy.visit(`/#/claim/${claimId}/action`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -7,7 +7,6 @@ describe.skip('ClaimDevelopment', () => {
|
||||||
const newReason = 'Calor';
|
const newReason = 'Calor';
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/claim/${claimId}/development`);
|
cy.visit(`/#/claim/${claimId}/development`);
|
||||||
cy.waitForElement('tbody');
|
cy.waitForElement('tbody');
|
||||||
|
|
|
@ -2,7 +2,6 @@ import '../commands.js';
|
||||||
|
|
||||||
describe('EntryBasicData', () => {
|
describe('EntryBasicData', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('buyer');
|
cy.login('buyer');
|
||||||
cy.visit(`/#/entry/list`);
|
cy.visit(`/#/entry/list`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import '../commands.js';
|
import '../commands.js';
|
||||||
describe('EntryDescriptor', () => {
|
describe('EntryDescriptor', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('buyer');
|
cy.login('buyer');
|
||||||
cy.visit(`/#/entry/list`);
|
cy.visit(`/#/entry/list`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import '../commands.js';
|
import '../commands.js';
|
||||||
describe('EntryDms', () => {
|
describe('EntryDms', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('buyer');
|
cy.login('buyer');
|
||||||
cy.visit(`/#/entry/list`);
|
cy.visit(`/#/entry/list`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import '../commands.js';
|
import '../commands.js';
|
||||||
describe('EntryLock', () => {
|
describe('EntryLock', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('buyer');
|
cy.login('buyer');
|
||||||
cy.visit(`/#/entry/list`);
|
cy.visit(`/#/entry/list`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -2,7 +2,6 @@ import '../commands.js';
|
||||||
|
|
||||||
describe('EntryNotes', () => {
|
describe('EntryNotes', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('buyer');
|
cy.login('buyer');
|
||||||
cy.visit(`/#/entry/list`);
|
cy.visit(`/#/entry/list`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -2,7 +2,6 @@ import './commands';
|
||||||
|
|
||||||
describe('EntryList', () => {
|
describe('EntryList', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('buyer');
|
cy.login('buyer');
|
||||||
cy.visit(`/#/entry/list`);
|
cy.visit(`/#/entry/list`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
describe('EntryStockBought', () => {
|
describe('EntryStockBought', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('buyer');
|
cy.login('buyer');
|
||||||
cy.visit(`/#/entry/stock-Bought`);
|
cy.visit(`/#/entry/stock-Bought`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
describe('EntrySupplier when is supplier', () => {
|
describe('EntrySupplier when is supplier', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('supplier');
|
cy.login('supplier');
|
||||||
cy.visit(`/#/entry/my`, {
|
cy.visit(`/#/entry/my`, {
|
||||||
onBeforeLoad(win) {
|
onBeforeLoad(win) {
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import './commands';
|
import './commands';
|
||||||
describe('EntryDms', () => {
|
describe('EntryDms', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('buyerBoss');
|
cy.login('buyerBoss');
|
||||||
cy.visit(`/#/entry/waste-recalc`);
|
cy.visit(`/#/entry/waste-recalc`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
/// <reference types="cypress" />
|
/// <reference types="cypress" />
|
||||||
describe.skip('InvoiceOut manual invoice', () => {
|
describe.skip('InvoiceOut manual invoice', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/ticket/list`);
|
cy.visit(`/#/ticket/list`);
|
||||||
cy.get('#searchbar input').type('{enter}');
|
cy.get('#searchbar input').type('{enter}');
|
||||||
|
|
|
@ -4,7 +4,6 @@ describe('InvoiceOut negative bases', () => {
|
||||||
`:nth-child(1) > [data-col-field="${opt}"] > .no-padding > .link`;
|
`:nth-child(1) > [data-col-field="${opt}"] > .no-padding > .link`;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/invoice-out/negative-bases`);
|
cy.visit(`/#/invoice-out/negative-bases`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
/// <reference types="cypress" />
|
/// <reference types="cypress" />
|
||||||
describe('InvoiceOut global invoicing', () => {
|
describe('InvoiceOut global invoicing', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('administrative');
|
cy.login('administrative');
|
||||||
cy.visit(`/#/invoice-out/global-invoicing`);
|
cy.visit(`/#/invoice-out/global-invoicing`);
|
||||||
});
|
});
|
||||||
|
@ -17,7 +16,7 @@ describe('InvoiceOut global invoicing', () => {
|
||||||
cy.dataCy('InvoiceOutGlobalPrinterSelect').type('printer1');
|
cy.dataCy('InvoiceOutGlobalPrinterSelect').type('printer1');
|
||||||
cy.get('.q-menu .q-item').contains('printer1').click();
|
cy.get('.q-menu .q-item').contains('printer1').click();
|
||||||
cy.get(
|
cy.get(
|
||||||
'[label="Invoice date"] > .q-field > .q-field__inner > .q-field__control'
|
'[label="Invoice date"] > .q-field > .q-field__inner > .q-field__control',
|
||||||
).click();
|
).click();
|
||||||
cy.get(':nth-child(5) > div > .q-btn > .q-btn__content > .block').click();
|
cy.get(':nth-child(5) > div > .q-btn > .q-btn__content > .block').click();
|
||||||
cy.get('.q-date__years-content > :nth-child(2) > .q-btn').click();
|
cy.get('.q-date__years-content > :nth-child(2) > .q-btn').click();
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
/// <reference types="cypress" />
|
/// <reference types="cypress" />
|
||||||
describe('ItemBarcodes', () => {
|
describe('ItemBarcodes', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/item/1/barcode`);
|
cy.visit(`/#/item/1/barcode`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
/// <reference types="cypress" />
|
/// <reference types="cypress" />
|
||||||
describe('Item botanical', () => {
|
describe('Item botanical', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/item/1/botanical`);
|
cy.visit(`/#/item/1/botanical`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
describe.skip('Item list', () => {
|
describe.skip('Item list', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/item/list`);
|
cy.visit(`/#/item/list`);
|
||||||
cy.typeSearchbar('{enter}');
|
cy.typeSearchbar('{enter}');
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
/// <reference types="cypress" />
|
/// <reference types="cypress" />
|
||||||
describe('Item summary', () => {
|
describe('Item summary', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/item/1/summary`);
|
cy.visit(`/#/item/1/summary`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
describe('Item tag', () => {
|
describe('Item tag', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/item/1/tags`);
|
cy.visit(`/#/item/1/tags`);
|
||||||
cy.get('.q-page').should('be.visible');
|
cy.get('.q-page').should('be.visible');
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
/// <reference types="cypress" />
|
/// <reference types="cypress" />
|
||||||
describe('Item tax', () => {
|
describe('Item tax', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/item/1/tax`);
|
cy.visit(`/#/item/1/tax`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -6,7 +6,6 @@ describe('Item type', () => {
|
||||||
const type = 'Flower';
|
const type = 'Flower';
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/item/item-type`);
|
cy.visit(`/#/item/item-type`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -6,7 +6,6 @@ describe('OrderList', () => {
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.visit('/#/order/list');
|
cy.visit('/#/order/list');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@ describe('Agency modes', () => {
|
||||||
const name = 'inhouse pickup';
|
const name = 'inhouse pickup';
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/route/agency/1/modes`);
|
cy.visit(`/#/route/agency/1/modes`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -13,7 +13,6 @@ describe('AgencyWorkCenter', () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/route/agency/11/workCenter`);
|
cy.visit(`/#/route/agency/11/workCenter`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -24,7 +24,6 @@ describe('Cmr list', () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit('/#/route/cmr');
|
cy.visit('/#/route/cmr');
|
||||||
cy.typeSearchbar('{enter}');
|
cy.typeSearchbar('{enter}');
|
||||||
|
|
|
@ -27,7 +27,6 @@ describe('RoadMap', () => {
|
||||||
const summaryUrl = '/summary';
|
const summaryUrl = '/summary';
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/route/roadmap`);
|
cy.visit(`/#/route/roadmap`);
|
||||||
cy.typeSearchbar('{enter}');
|
cy.typeSearchbar('{enter}');
|
||||||
|
|
|
@ -32,7 +32,6 @@ describe.skip('RouteAutonomous', () => {
|
||||||
const dataSaved = 'Data saved';
|
const dataSaved = 'Data saved';
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/route/agency-term`);
|
cy.visit(`/#/route/agency-term`);
|
||||||
cy.typeSearchbar('{enter}');
|
cy.typeSearchbar('{enter}');
|
||||||
|
|
|
@ -75,7 +75,6 @@ describe.skip('Route extended list', () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(url);
|
cy.visit(url);
|
||||||
cy.typeSearchbar('{enter}');
|
cy.typeSearchbar('{enter}');
|
||||||
|
|
|
@ -26,8 +26,8 @@ describe('Route', () => {
|
||||||
const summaryUrl = '/summary';
|
const summaryUrl = '/summary';
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
|
cy.viewport(1920, 1080);
|
||||||
cy.visit(`/#/route/list`);
|
cy.visit(`/#/route/list`);
|
||||||
cy.typeSearchbar('{enter}');
|
cy.typeSearchbar('{enter}');
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
describe('Vehicle', () => {
|
describe('Vehicle', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('deliveryAssistant');
|
cy.login('deliveryAssistant');
|
||||||
cy.visit(`/#/route/vehicle/7/summary`);
|
cy.visit(`/#/route/vehicle/7/summary`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -21,7 +21,6 @@ describe('Vehicle list', () => {
|
||||||
const summaryUrl = '/summary';
|
const summaryUrl = '/summary';
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/route/vehicle/list`);
|
cy.visit(`/#/route/vehicle/list`);
|
||||||
cy.typeSearchbar('{enter}');
|
cy.typeSearchbar('{enter}');
|
||||||
|
|
|
@ -10,7 +10,6 @@ describe('Vehicle Notes', () => {
|
||||||
const newNoteText = 'probando';
|
const newNoteText = 'probando';
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/route/vehicle/1/notes`);
|
cy.visit(`/#/route/vehicle/1/notes`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -5,7 +5,6 @@ describe('ParkingList', () => {
|
||||||
const summaryHeader = '.header-link';
|
const summaryHeader = '.header-link';
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/shelving/parking/list`);
|
cy.visit(`/#/shelving/parking/list`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -3,7 +3,6 @@ describe('ShelvingList', () => {
|
||||||
const parking =
|
const parking =
|
||||||
'.q-card > :nth-child(1) > .q-select > .q-field__inner > .q-field__control > .q-field__control-container';
|
'.q-card > :nth-child(1) > .q-select > .q-field__inner > .q-field__control > .q-field__control-container';
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/shelving/1/basic-data`);
|
cy.visit(`/#/shelving/1/basic-data`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
/// <reference types="cypress" />
|
/// <reference types="cypress" />
|
||||||
describe('ShelvingList', () => {
|
describe('ShelvingList', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/shelving/list`);
|
cy.visit(`/#/shelving/list`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
describe('Supplier Balance', () => {
|
describe('Supplier Balance', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/supplier/1/balance`);
|
cy.visit(`/#/supplier/1/balance`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -9,7 +9,6 @@ describe('Ticket descriptor', () => {
|
||||||
const weightValue = '[data-cy="vnLvWeight"]';
|
const weightValue = '[data-cy="vnLvWeight"]';
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should clone the ticket without warehouse', () => {
|
it('should clone the ticket without warehouse', () => {
|
||||||
|
|
|
@ -5,7 +5,6 @@ describe('Ticket expedtion', () => {
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should change the state', () => {
|
it('should change the state', () => {
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
describe('TicketFilter', () => {
|
describe('TicketFilter', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.visit('/#/ticket/list');
|
cy.visit('/#/ticket/list');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
describe('TicketList', () => {
|
describe('TicketList', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.visit('/#/ticket/list', false);
|
cy.visit('/#/ticket/list', false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
describe('TicketNotes', () => {
|
describe('TicketNotes', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.visit('/#/ticket/31/observation');
|
cy.visit('/#/ticket/31/observation');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
describe('TicketRequest', () => {
|
describe('TicketRequest', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.visit('/#/ticket/31/request');
|
cy.visit('/#/ticket/31/request');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ const firstRow = 'tbody > :nth-child(1)';
|
||||||
describe('TicketSale', () => {
|
describe('TicketSale', () => {
|
||||||
describe('#23', () => {
|
describe('#23', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.login('salesBoss');
|
cy.login('claimManager');
|
||||||
cy.viewport(1920, 1080);
|
cy.viewport(1920, 1080);
|
||||||
cy.visit('/#/ticket/23/sale');
|
cy.visit('/#/ticket/23/sale');
|
||||||
});
|
});
|
||||||
|
@ -15,6 +15,8 @@ describe('TicketSale', () => {
|
||||||
cy.get('[data-col-field="price"]').find('.q-btn').click();
|
cy.get('[data-col-field="price"]').find('.q-btn').click();
|
||||||
cy.waitForElement('[data-cy="ticketEditManaProxy"]');
|
cy.waitForElement('[data-cy="ticketEditManaProxy"]');
|
||||||
cy.dataCy('ticketEditManaProxy').should('exist');
|
cy.dataCy('ticketEditManaProxy').should('exist');
|
||||||
|
cy.get('[data-cy="componentOption-37"]').click();
|
||||||
|
|
||||||
cy.waitForElement('[data-cy="Price_input"]');
|
cy.waitForElement('[data-cy="Price_input"]');
|
||||||
cy.dataCy('Price_input').clear().type(price);
|
cy.dataCy('Price_input').clear().type(price);
|
||||||
cy.intercept('POST', /\/api\/Sales\/\d+\/updatePrice/).as('updatePrice');
|
cy.intercept('POST', /\/api\/Sales\/\d+\/updatePrice/).as('updatePrice');
|
||||||
|
@ -33,6 +35,7 @@ describe('TicketSale', () => {
|
||||||
cy.get('[data-col-field="discount"]').find('.q-btn').click();
|
cy.get('[data-col-field="discount"]').find('.q-btn').click();
|
||||||
cy.waitForElement('[data-cy="ticketEditManaProxy"]');
|
cy.waitForElement('[data-cy="ticketEditManaProxy"]');
|
||||||
cy.dataCy('ticketEditManaProxy').should('exist');
|
cy.dataCy('ticketEditManaProxy').should('exist');
|
||||||
|
cy.get('[data-cy="componentOption-37"]').click();
|
||||||
cy.waitForElement('[data-cy="Disc_input"]');
|
cy.waitForElement('[data-cy="Disc_input"]');
|
||||||
cy.dataCy('Disc_input').clear().type(discount);
|
cy.dataCy('Disc_input').clear().type(discount);
|
||||||
cy.intercept('POST', /\/api\/Tickets\/\d+\/updateDiscount/).as(
|
cy.intercept('POST', /\/api\/Tickets\/\d+\/updateDiscount/).as(
|
||||||
|
@ -83,8 +86,7 @@ describe('TicketSale', () => {
|
||||||
});
|
});
|
||||||
describe('#24 add claim', () => {
|
describe('#24 add claim', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.login('developer');
|
cy.login('salesPerson');
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.visit('/#/ticket/24/sale');
|
cy.visit('/#/ticket/24/sale');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -102,8 +104,7 @@ describe('TicketSale', () => {
|
||||||
});
|
});
|
||||||
describe('#31 free ticket', () => {
|
describe('#31 free ticket', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.login('developer');
|
cy.login('claimManager');
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.visit('/#/ticket/31/sale');
|
cy.visit('/#/ticket/31/sale');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -139,14 +140,15 @@ describe('TicketSale', () => {
|
||||||
cy.dataCy('ticketSaleMoreActionsDropdown').should('be.disabled');
|
cy.dataCy('ticketSaleMoreActionsDropdown').should('be.disabled');
|
||||||
});
|
});
|
||||||
|
|
||||||
it.only('should update discount when "Update discount" is clicked', () => {
|
it('should update discount when "Update discount" is clicked', () => {
|
||||||
const discount = Number((Math.random() * 99 + 1).toFixed(2));
|
const discount = Number((Math.random() * 99 + 1).toFixed(2));
|
||||||
|
|
||||||
selectFirstRow();
|
selectFirstRow();
|
||||||
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
cy.dataCy('ticketSaleMoreActionsDropdown').click();
|
||||||
cy.waitForElement('[data-cy="updateDiscountItem"]');
|
cy.waitForElement('[data-cy="updateDiscountItem"]');
|
||||||
cy.dataCy('updateDiscountItem').should('exist');
|
|
||||||
cy.dataCy('updateDiscountItem').click();
|
cy.dataCy('updateDiscountItem').click();
|
||||||
|
cy.waitForElement('[data-cy="componentOption-37"]');
|
||||||
|
cy.get('[data-cy="componentOption-37"]').click();
|
||||||
cy.waitForElement('[data-cy="ticketSaleDiscountInput"]');
|
cy.waitForElement('[data-cy="ticketSaleDiscountInput"]');
|
||||||
cy.dataCy('ticketSaleDiscountInput').find('input').focus();
|
cy.dataCy('ticketSaleDiscountInput').find('input').focus();
|
||||||
cy.intercept('POST', /\/api\/Tickets\/\d+\/updateDiscount/).as(
|
cy.intercept('POST', /\/api\/Tickets\/\d+\/updateDiscount/).as(
|
||||||
|
@ -191,8 +193,7 @@ describe('TicketSale', () => {
|
||||||
});
|
});
|
||||||
describe('#32 transfer', () => {
|
describe('#32 transfer', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.login('developer');
|
cy.login('salesPerson');
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.visit('/#/ticket/32/sale');
|
cy.visit('/#/ticket/32/sale');
|
||||||
});
|
});
|
||||||
it('transfer sale to a new ticket', () => {
|
it('transfer sale to a new ticket', () => {
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
describe('VnBreadcrumbs', () => {
|
describe('VnBreadcrumbs', () => {
|
||||||
const lastBreadcrumb = '.q-breadcrumbs--last > .q-breadcrumbs__el';
|
const lastBreadcrumb = '.q-breadcrumbs--last > .q-breadcrumbs__el';
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit('/');
|
cy.visit('/');
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
describe('WagonTypeCreate', () => {
|
describe('WagonTypeCreate', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit('/#/wagon/type/list');
|
cy.visit('/#/wagon/type/list');
|
||||||
cy.waitForElement('.q-page', 6000);
|
cy.waitForElement('.q-page', 6000);
|
||||||
|
|
|
@ -2,7 +2,6 @@ describe('WagonTypeEdit', () => {
|
||||||
const trayColorRow =
|
const trayColorRow =
|
||||||
'.q-select > .q-field__inner > .q-field__control > .q-field__control-container';
|
'.q-select > .q-field__inner > .q-field__control > .q-field__control-container';
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit('/#/wagon/type/1/edit');
|
cy.visit('/#/wagon/type/1/edit');
|
||||||
});
|
});
|
||||||
|
|
|
@ -4,7 +4,6 @@ describe('WorkerPit', () => {
|
||||||
const savePIT = '#st-actions > .q-btn-group > .q-btn--standard';
|
const savePIT = '#st-actions > .q-btn-group > .q-btn--standard';
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/worker/1107/pit`);
|
cy.visit(`/#/worker/1107/pit`);
|
||||||
});
|
});
|
||||||
|
|
|
@ -4,7 +4,6 @@ describe('ZoneDeliveryDays', () => {
|
||||||
const submitForm = '.q-form > .q-btn > .q-btn__content';
|
const submitForm = '.q-form > .q-btn > .q-btn__content';
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.visit(`/#/zone/delivery-days`);
|
cy.visit(`/#/zone/delivery-days`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,6 @@ describe('ZoneUpcomingDeliveries', () => {
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.viewport(1920, 1080);
|
|
||||||
cy.visit(`/#/zone/upcoming-deliveries`);
|
cy.visit(`/#/zone/upcoming-deliveries`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue