From 36473d979bea628a0c9f66f3659ff30f86793742 Mon Sep 17 00:00:00 2001 From: jtubau Date: Wed, 15 Jan 2025 13:38:45 +0100 Subject: [PATCH] feat: refs #7322 add address selection for ticket transfer --- .../Ticket/Card/TicketDescriptorMenu.vue | 83 ++++++++++++++++--- 1 file changed, 73 insertions(+), 10 deletions(-) diff --git a/src/pages/Ticket/Card/TicketDescriptorMenu.vue b/src/pages/Ticket/Card/TicketDescriptorMenu.vue index 38e2af612..8f60cf509 100644 --- a/src/pages/Ticket/Card/TicketDescriptorMenu.vue +++ b/src/pages/Ticket/Card/TicketDescriptorMenu.vue @@ -41,6 +41,9 @@ const ticketSummary = useArrayData('TicketSummary'); const { ticket } = toRefs(props); const ticketId = computed(() => props.ticket.id ?? currentRoute.value.params.id); const client = ref(); +const address = ref(); +const addressesOptions = ref([]); +const selectedClient = ref(); const showTransferDialog = ref(false); const showTurnDialog = ref(false); const showChangeTimeDialog = ref(false); @@ -52,6 +55,45 @@ const weight = ref(); const hasDocuwareFile = ref(); const quasar = useQuasar(); const canRestoreTicket = ref(false); + +const onClientSelected = async(clientId) =>{ + await fetchClient(clientId); + await fetchAddresses(clientId); +}; + +const fetchClient = async (clientId) => { + const filter = { + include: { + relation: 'defaultAddress', + scope: { + fields: ['id', 'nickname'], + }, + }, + where: { id: clientId }, + }; + const params = { filter: JSON.stringify(filter) }; + const { data } = await axios.get('Clients', { params }); + const [client] = data; + selectedClient.value = client; +}; + +const fetchAddresses = async (clientId) => { + if (!clientId) return; + + const filter = { + fields: ['nickname', 'street', 'city', 'id', 'isActive'], + order: ['isDefaultAddress DESC', 'isActive DESC', 'nickname ASC'], + }; + const params = { filter: JSON.stringify(filter) }; + const { data } = await axios.get(`Clients/${clientId}/addresses`, { + params, + }); + addressesOptions.value = data; + + const { defaultAddress } = selectedClient.value; + address.value = defaultAddress.id; +}; + const actions = { clone: async () => { const opts = { message: t('Ticket cloned'), type: 'positive' }; @@ -260,17 +302,14 @@ async function makeInvoice() { window.location.reload(); } -async function transferClient(client) { +async function transferClient(client, address) { const params = { clientFk: client, + addressFk: address, }; - const { data } = await axios.patch( - `Tickets/${ticketId.value}/transferClient`, - params - ); - - if (data) window.location.reload(); + await axios.patch( `Tickets/${ticketId.value}/transferClient`, params ); + window.location.reload(); } async function addTurn(day) { @@ -446,7 +485,7 @@ async function ticketToRestore() { + + + @@ -762,7 +824,7 @@ async function ticketToRestore() { en: addTurn: Add turn invoiceIds: "Invoices have been generated with the following ids: {invoiceIds}" - + es: Show Delivery Note...: Ver albarán... Send Delivery Note...: Enviar albarán... @@ -814,4 +876,5 @@ es: Are you sure you want to restore the ticket?: ¿Seguro que quieres restaurar el ticket? You are going to restore this ticket: Vas a restaurar este ticket Ticket restored: Ticket restaurado + Select a client to enable: Selecciona un cliente para habilitar