feat: refs #6564 add agency & ticket list #1108

Open
jorgep wants to merge 9 commits from 6564-enhanceTicketAdvance into dev
4 changed files with 75 additions and 33 deletions

View File

@ -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,11 +130,17 @@ const ticketColumns = computed(() => [
}, },
{ {
align: 'left', align: 'left',
label: t('advanceTickets.futureId'), label: t('advanceTickets.problems'),
name: 'futureId', name: 'totalProblems',
headerClass: 'vertical-separator horizontal-separator', headerClass: 'vertical-separator horizontal-separator',
columnClass: 'vertical-separator', columnClass: 'vertical-separator',
}, },
{
align: 'left',
label: t('advanceTickets.futureId'),
name: 'futureId',
headerClass: 'horizontal-separator',
},
{ {
align: 'left', align: 'left',
label: t('advanceTickets.futureIpt'), label: t('advanceTickets.futureIpt'),
@ -242,7 +268,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 +293,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(() => {
@ -285,12 +311,12 @@ const progressAdd = () => {
t('advanceTickets.moveTicketSuccess', { t('advanceTickets.moveTicketSuccess', {
ticketsNumber: progressLength.value - splitErrors.value.length, ticketsNumber: progressLength.value - splitErrors.value.length,
}), }),
'positive' 'positive',
); );
} }
}; };
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 +336,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 +352,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) => {
@ -345,16 +397,16 @@ watch(
originElRef.value.setAttribute('colspan', '9'); originElRef.value.setAttribute('colspan', '9');
destinationElRef.value.textContent = `${t( destinationElRef.value.textContent = `${t(
'advanceTickets.destination' 'advanceTickets.destination',
)} ${toDateFormat(vnTableRef.value.params.dateToAdvance)}`; )} ${toDateFormat(vnTableRef.value.params.dateToAdvance)}`;
originElRef.value.textContent = `${t('advanceTickets.origin')} ${toDateFormat( originElRef.value.textContent = `${t('advanceTickets.origin')} ${toDateFormat(
vnTableRef.value.params.dateFuture vnTableRef.value.params.dateFuture,
)}`; )}`;
newRow.append(destinationElRef.value, originElRef.value); newRow.append(destinationElRef.value, originElRef.value);
head.insertBefore(newRow, firstRow); head.insertBefore(newRow, firstRow);
}, },
{ once: true, inmmediate: true } { once: true, inmmediate: true },
); );
watch( watch(
@ -362,14 +414,14 @@ watch(
() => { () => {
if (originElRef.value && destinationElRef.value) { if (originElRef.value && destinationElRef.value) {
destinationElRef.value.textContent = `${t( destinationElRef.value.textContent = `${t(
'advanceTickets.destination' 'advanceTickets.destination',
)} ${toDateFormat(vnTableRef.value.params.dateToAdvance)}`; )} ${toDateFormat(vnTableRef.value.params.dateToAdvance)}`;
originElRef.value.textContent = `${t('advanceTickets.origin')} ${toDateFormat( originElRef.value.textContent = `${t('advanceTickets.origin')} ${toDateFormat(
vnTableRef.value.params.dateFuture vnTableRef.value.params.dateFuture,
)}`; )}`;
} }
}, },
{ deep: true } { deep: true },
); );
</script> </script>
<template> <template>
@ -399,15 +451,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 +461,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,7 +490,7 @@ 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"
auto-load auto-load
:disable-option="{ card: true }" :disable-option="{ card: true }"
@ -521,6 +557,9 @@ watch(
{{ toCurrency(row.totalWithVat || 0) }} {{ toCurrency(row.totalWithVat || 0) }}
</QBadge> </QBadge>
</template> </template>
<template #column-problems="{ row }">
<TicketProblems :row="row" />
</template>
<template #column-futureId="{ row }"> <template #column-futureId="{ row }">
<QBtn flat class="link" dense> <QBtn flat class="link" dense>
{{ row.futureId }} {{ row.futureId }}

View File

@ -126,6 +126,7 @@ onMounted(async () => await getItemPackingTypes());
v-model="params.scopeDays" v-model="params.scopeDays"
:label="t('Days onward')" :label="t('Days onward')"
is-outlined is-outlined
:step="0"
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>

View File

@ -54,6 +54,7 @@ advanceTickets:
search: Search advance tickets search: Search advance tickets
searchInfo: Search advance tickets by ID or client ID searchInfo: Search advance tickets by ID or client ID
clonedSales: Has turn lines clonedSales: Has turn lines
problems: Problems
futureTickets: futureTickets:
problems: Problems problems: Problems
shipped: Date shipped: Date

View File

@ -92,6 +92,7 @@ advanceTickets:
search: Buscar por tickets adelantados search: Buscar por tickets adelantados
searchInfo: Buscar tickets adelantados por el identificador o el identificador del cliente searchInfo: Buscar tickets adelantados por el identificador o el identificador del cliente
clonedSales: Tiene líneas de turno clonedSales: Tiene líneas de turno
problems: Problemas
futureTickets: futureTickets:
problems: Problemas problems: Problemas
shipped: Fecha shipped: Fecha