diff --git a/src/pages/Customer/components/CustomerAddressEdit.vue b/src/pages/Customer/components/CustomerAddressEdit.vue index 7685c55bc..15894509e 100644 --- a/src/pages/Customer/components/CustomerAddressEdit.vue +++ b/src/pages/Customer/components/CustomerAddressEdit.vue @@ -2,7 +2,7 @@ import { onBeforeMount, ref } from 'vue'; import { useI18n } from 'vue-i18n'; import { useRoute, useRouter } from 'vue-router'; - +import { useQuasar } from 'quasar'; import axios from 'axios'; import VnLocation from 'src/components/common/VnLocation.vue'; import FetchData from 'components/FetchData.vue'; @@ -13,11 +13,12 @@ import VnSelect from 'src/components/common/VnSelect.vue'; import VnSelectDialog from 'src/components/common/VnSelectDialog.vue'; import CustomerNewCustomsAgent from 'src/pages/Customer/components/CustomerNewCustomsAgent.vue'; import VnInputNumber from 'src/components/common/VnInputNumber.vue'; +import VnConfirm from 'components/ui/VnConfirm.vue'; const { t } = useI18n(); const route = useRoute(); const router = useRouter(); - +const quasar = useQuasar(); const urlUpdate = ref(''); const agencyModes = ref([]); const incoterms = ref([]); @@ -83,8 +84,26 @@ const deleteNote = (id, index) => { notes.value.splice(index, 1); }; -const onDataSaved = async () => { - let payload = { +const updateAddress = async (data) => { + await axios.patch(urlUpdate.value, data); +}; + +const updateAddressTicket = async () => { + urlUpdate.value += '?updateObservations=true'; +}; + +const updateObservations = async (payload) => { + await axios.post('AddressObservations/crud', payload); + notes.value = []; + deletes.value = []; + toCustomerAddress(); +}; +async function updateAll({ data, payload }) { + await updateObservations(payload); + await updateAddress(data); +} +function getPayload() { + return { creates: notes.value.filter((note) => note.$isNew), deletes: deletes.value, updates: notes.value @@ -101,14 +120,41 @@ const onDataSaved = async () => { where: { id: note.id }, })), }; +} - await axios.post('AddressObservations/crud', payload); - notes.value = []; - deletes.value = []; - toCustomerAddress(); -}; +async function handleDialog(data) { + console.error(data); + const payload = getPayload(); + const body = { data, payload }; + if (payload.updates.length) { + quasar + .dialog({ + component: VnConfirm, + componentProps: { + title: t( + 'Do you also want to modify the states of all the tickets that are about to be served?' + ), + message: t('confirmDeletionMessage'), + }, + }) + .onOk(async () => { + await updateAddressTicket(); + await updateAll(body); + toCustomerAddress(); + }) + .onCancel(async () => { + await updateAll(body); + toCustomerAddress(); + }); + } else { + updateAll(body); + toCustomerAddress(); + } +} const toCustomerAddress = () => { + notes.value = []; + deletes.value = []; router.push({ name: 'CustomerAddress', params: { @@ -143,7 +189,7 @@ function handleLocation(data, location) { :observe-form-changes="false" :url-update="urlUpdate" :url="`Addresses/${route.params.addressId}`" - @on-data-saved="onDataSaved()" + :save-fn="handleDialog" auto-load >