From 65b715078e9a61e5ca15740e90939dcdf75890da Mon Sep 17 00:00:00 2001 From: Guido Date: Thu, 24 Apr 2025 17:54:38 -0300 Subject: [PATCH] refactor(ticket): usar nuevo api en lugar de japi en TicketView --- src/pages/Ecomerce/TicketView.vue | 91 ++++++++++++++++++++++++++----- 1 file changed, 77 insertions(+), 14 deletions(-) diff --git a/src/pages/Ecomerce/TicketView.vue b/src/pages/Ecomerce/TicketView.vue index b04dad63..20a4cdfe 100644 --- a/src/pages/Ecomerce/TicketView.vue +++ b/src/pages/Ecomerce/TicketView.vue @@ -2,6 +2,7 @@ import { onMounted, inject, ref } from 'vue'; import { useRoute } from 'vue-router'; import { useI18n } from 'vue-i18n'; +import { formatDate } from 'src/lib/filters.js'; import TicketDetails from 'src/pages/Ecomerce/TicketDetails.vue'; @@ -10,7 +11,7 @@ import { storeToRefs } from 'pinia'; import { usePrintService } from 'src/composables/usePrintService'; const { t } = useI18n(); -const jApi = inject('jApi'); +const api = inject('api'); const route = useRoute(); const appStore = useAppStore(); const { isHeaderMounted } = storeToRefs(appStore); @@ -20,21 +21,83 @@ const ticket = ref({}); const rows = ref([]); const services = ref(null); const packages = ref(null); +const dateFormat = 'DD/MM/YYYY'; + +const fetchTicketData = async ticketId => { + const { data } = await api.post('applications/myTicket_get/execute-proc', { + schema: 'hedera', + params: [ticketId] + }); + return data?.[0] || null; +}; + +const fetchTicketRows = async ticketId => { + const { data } = await api.post( + 'applications/myTicket_getRows/execute-proc', + { + schema: 'hedera', + params: [ticketId] + } + ); + return data || []; +}; + +const fetchTicketServices = async ticketId => { + const { data } = await api.post( + 'applications/myTicket_getServices/execute-proc', + { + schema: 'hedera', + params: [ticketId] + } + ); + return data || null; +}; + +const fetchTicketPackages = async ticketId => { + const { data } = await api.post( + 'applications/myTicket_getPackages/execute-proc', + { + schema: 'hedera', + params: [ticketId] + } + ); + return data || null; +}; + +const formatTicketDates = ticketData => { + if (!ticketData) return; + + const dateFields = ['landed', 'shipped']; + dateFields.forEach(field => { + if (ticketData[field]) { + ticketData[field] = formatDate(ticketData[field], dateFormat); + } + }); +}; onMounted(async () => { - const params = { - ticket: parseInt(route.params.id) - }; - ticket.value = await jApi.getObject('CALL myTicket_get(#ticket)', params); - rows.value = await jApi.query('CALL myTicket_getRows(#ticket)', params); - services.value = await jApi.query( - 'CALL myTicket_getServices(#ticket)', - params - ); - packages.value = await jApi.query( - 'CALL myTicket_getPackages(#ticket)', - params - ); + const ticketId = parseInt(route.params.id); + + try { + const [ticketData, rowsData, servicesData, packagesData] = + await Promise.all([ + fetchTicketData(ticketId), + fetchTicketRows(ticketId), + fetchTicketServices(ticketId), + fetchTicketPackages(ticketId) + ]); + + if (ticketData) { + formatTicketDates(ticketData); + ticket.value = ticketData; + } + + rows.value = rowsData; + services.value = servicesData; + packages.value = packagesData; + } catch (error) { + console.error('Error fetching ticket data:', error); + } }); const onPrintClick = () =>