diff --git a/src/pages/Ticket/Card/BasicData/TicketBasicDataForm.vue b/src/pages/Ticket/Card/BasicData/TicketBasicDataForm.vue index f5ce8a0f3..ee5f5b8d4 100644 --- a/src/pages/Ticket/Card/BasicData/TicketBasicDataForm.vue +++ b/src/pages/Ticket/Card/BasicData/TicketBasicDataForm.vue @@ -16,12 +16,9 @@ import { useAcl } from 'src/composables/useAcl'; import { useValidator } from 'src/composables/useValidator'; import { toTimeFormat } from 'filters/date.js'; -const $props = defineProps({ - formData: { - type: Object, - required: true, - default: () => ({}), - }, +const formData = defineModel({ + type: Object, + required: true, }); const emit = defineEmits(['updateForm']); @@ -40,7 +37,6 @@ const agenciesOptions = ref([]); const zonesOptions = ref([]); const addresses = ref([]); const zoneSelectRef = ref(); -const formData = ref($props.formData); watch( () => formData.value, @@ -69,75 +65,44 @@ const zoneWhere = computed(() => { : {}; }); -const getLanded = async (params) => { - try { - const validParams = - shipped.value && addressId.value && agencyModeId.value && warehouseId.value; - if (!validParams) return; +async function getLanded(params) { + getDate(`Agencies/getLanded`, params); +} - formData.value.zoneFk = null; - zonesOptions.value = []; - const { data } = await axios.get(`Agencies/getLanded`, { params }); - if (data) { - formData.value.zoneFk = data.zoneFk; - formData.value.landed = data.landed; - formData.value.shipped = params.shipped; - } - } catch (error) { - console.error(error); - notify(t('basicData.noDeliveryZoneAvailable'), 'negative'); +async function getShipped(params) { + getDate(`Agencies/getShipped`, params); +} + +async function getDate(query, params) { + for (const param in params) { + if (!params[param]) return; } -}; -const getShipped = async (params) => { - try { - const validParams = - landed.value && addressId.value && agencyModeId.value && warehouseId.value; - if (!validParams) return; + formData.value.zoneFk = null; + zonesOptions.value = []; + const { data } = await axios.get(query, { params }); + if (!data) return notify(t('basicData.noDeliveryZoneAvailable'), 'negative'); - formData.value.zoneFk = null; - zonesOptions.value = []; - const { data } = await axios.get(`Agencies/getShipped`, { params }); - if (data) { - formData.value.zoneFk = data.zoneFk; - formData.value.landed = params.landed; - formData.value.shipped = data.shipped; - } else { - notify(t('basicData.noDeliveryZoneAvailable'), 'negative'); - } - } catch (error) { - console.error(error); - notify(t('basicData.noDeliveryZoneAvailable'), 'negative'); - } -}; + formData.value.zoneFk = data.zoneFk; + if (data.landed) formData.value.landed = data.landed; + if (data.shipped) formData.value.shipped = data.shipped; +} const onChangeZone = async (zoneId) => { - try { - formData.value.agencyModeFk = null; - const { data } = await axios.get(`Zones/${zoneId}`); - formData.value.agencyModeFk = data.agencyModeFk; - } catch (error) { - console.error(error); - } + formData.value.agencyModeFk = null; + const { data } = await axios.get(`Zones/${zoneId}`); + formData.value.agencyModeFk = data.agencyModeFk; }; const onChangeAddress = async (addressId) => { - try { - formData.value.nickname = null; - const { data } = await axios.get(`Addresses/${addressId}`); - formData.value.nickname = data.nickname; - } catch (error) { - console.error(error); - } + formData.value.nickname = null; + const { data } = await axios.get(`Addresses/${addressId}`); + formData.value.nickname = data.nickname; }; const getClientDefaultAddress = async (clientId) => { - try { - const { data } = await axios.get(`Clients/${clientId}`); - if (data) addressId.value = data.defaultAddressFk; - } catch (error) { - console.error(error); - } + const { data } = await axios.get(`Clients/${clientId}`); + if (data) addressId.value = data.defaultAddressFk; }; const clientAddressesList = async (value) => { @@ -189,18 +154,26 @@ const clientId = computed({ }, }); -const landed = computed({ - get: () => formData.value?.landed, - set: (val) => { - formData.value.landed = val; - getShipped({ - landed: val, +function addDateParams(obj) { + return { + ...obj, + ...{ addressFk: formData.value?.addressFk, agencyModeFk: formData.value?.agencyModeFk, warehouseFk: formData.value?.warehouseFk, - }); - }, -}); + }, + }; +} + +async function setLanded(landed) { + if (!landed) return; + getShipped(addDateParams({ landed })); +} + +async function setShipped(shipped) { + if (!shipped) return; + getLanded(addDateParams({ shipped })); +} const agencyModeId = computed({ get: () => formData.value.agencyModeFk, @@ -248,21 +221,6 @@ const warehouseId = computed({ }, }); -const shipped = computed({ - get: () => formData.value?.shipped, - set: (val) => { - if (new Date(formData.value?.shipped).toDateString() != val.toDateString()) - val.setHours(0, 0, 0, 0); - formData.value.shipped = val; - getLanded({ - shipped: val, - addressFk: formData.value?.addressFk, - agencyModeFk: formData.value?.agencyModeFk, - warehouseFk: formData.value?.warehouseFk, - }); - }, -}); - const onFormModelInit = () => { if (formData.value?.clientFk) clientAddressesList(formData.value?.clientFk); }; @@ -463,18 +421,21 @@ async function getZone(options) { v-model="formData.shipped" :required="true" :rules="validate('basicData.shipped')" + @update:model-value="setShipped" /> diff --git a/src/pages/Ticket/Card/BasicData/TicketBasicDataView.vue b/src/pages/Ticket/Card/BasicData/TicketBasicDataView.vue index 92640f898..851593bff 100644 --- a/src/pages/Ticket/Card/BasicData/TicketBasicDataView.vue +++ b/src/pages/Ticket/Card/BasicData/TicketBasicDataView.vue @@ -70,60 +70,51 @@ const isFormInvalid = () => { }; const getPriceDifference = async () => { - try { - const params = { - landed: formData.value.landed, - addressId: formData.value.addressFk, - agencyModeId: formData.value.agencyModeFk, - zoneId: formData.value.zoneFk, - warehouseId: formData.value.warehouseFk, - shipped: formData.value.shipped, - }; - const { data } = await axios.post( - `tickets/${formData.value.id}/priceDifference`, - params - ); - formData.value.sale = data; - } catch (error) { - console.error(error); - } + const params = { + landed: formData.value.landed, + addressId: formData.value.addressFk, + agencyModeId: formData.value.agencyModeFk, + zoneId: formData.value.zoneFk, + warehouseId: formData.value.warehouseFk, + shipped: formData.value.shipped, + }; + const { data } = await axios.post( + `tickets/${formData.value.id}/priceDifference`, + params + ); + formData.value.sale = data; }; const submit = async () => { - try { - if (!formData.value.option) - return notify(t('basicData.chooseAnOption'), 'negative'); + if (!formData.value.option) return notify(t('basicData.chooseAnOption'), 'negative'); - const params = { - clientFk: formData.value.clientFk, - nickname: formData.value.nickname, - agencyModeFk: formData.value.agencyModeFk, - addressFk: formData.value.addressFk, - zoneFk: formData.value.zoneFk, - warehouseFk: formData.value.warehouseFk, - companyFk: formData.value.companyFk, - shipped: formData.value.shipped, - landed: formData.value.landed, - isDeleted: formData.value.isDeleted, - option: formData.value.option, - isWithoutNegatives: formData.value.withoutNegatives, - withWarningAccept: formData.value.withWarningAccept, - keepPrice: false, - }; + const params = { + clientFk: formData.value.clientFk, + nickname: formData.value.nickname, + agencyModeFk: formData.value.agencyModeFk, + addressFk: formData.value.addressFk, + zoneFk: formData.value.zoneFk, + warehouseFk: formData.value.warehouseFk, + companyFk: formData.value.companyFk, + shipped: formData.value.shipped, + landed: formData.value.landed, + isDeleted: formData.value.isDeleted, + option: formData.value.option, + isWithoutNegatives: formData.value.withoutNegatives, + withWarningAccept: formData.value.withWarningAccept, + keepPrice: false, + }; - const { data } = await axios.post( - `tickets/${formData.value.id}/componentUpdate`, - params - ); + const { data } = await axios.post( + `tickets/${formData.value.id}/componentUpdate`, + params + ); - if (!data) return; + if (!data) return; - const ticketToMove = data.id; - notify(t('basicData.unroutedTicket'), 'positive'); - router.push({ name: 'TicketSummary', params: { id: ticketToMove } }); - } catch (error) { - console.error(error); - } + const ticketToMove = data.id; + notify(t('basicData.unroutedTicket'), 'positive'); + router.push({ name: 'TicketSummary', params: { id: ticketToMove } }); }; const submitWithNegatives = async () => { @@ -167,7 +158,7 @@ onBeforeMount(async () => await getTicketData());