diff --git a/src/components/common/VnDms.vue b/src/components/common/VnDms.vue index d2651f5d8..90390c35f 100644 --- a/src/components/common/VnDms.vue +++ b/src/components/common/VnDms.vue @@ -27,6 +27,10 @@ const $props = defineProps({ type: Object, default: null, }, + url: { + type: String, + default: null, + }, }); const warehouses = ref(); @@ -65,14 +69,15 @@ function mapperDms(data) { } function getUrl() { + if ($props.url) return $props.url; if ($props.formInitialData) return 'dms/' + $props.formInitialData.id + '/updateFile'; return `${$props.model}/${route.params.id}/uploadFile`; } async function save() { const body = mapperDms(dms.value); - await axios.post(getUrl(), body[0], body[1]); - emit('onDataSaved', body[1].params); + const response = await axios.post(getUrl(), body[0], body[1]); + emit('onDataSaved', body[1].params, response); } function defaultData() { diff --git a/src/pages/Route/RouteAutonomous.vue b/src/pages/Route/RouteAutonomous.vue index 15e31d931..6fd4d3f90 100644 --- a/src/pages/Route/RouteAutonomous.vue +++ b/src/pages/Route/RouteAutonomous.vue @@ -12,8 +12,11 @@ import VnLv from 'components/ui/VnLv.vue'; import useNotify from 'composables/useNotify'; import RouteAutonomousFilter from 'pages/Route/Card/RouteAutonomousFilter.vue'; import { useRouter } from 'vue-router'; -import RouteSummary from "pages/Route/Card/RouteSummary.vue"; -import {useSummaryDialog} from "composables/useSummaryDialog"; +import RouteSummary from 'pages/Route/Card/RouteSummary.vue'; +import { useSummaryDialog } from 'composables/useSummaryDialog'; +import VnDms from 'components/common/VnDms.vue'; +import { useState } from 'composables/useState'; +import axios from 'axios'; const stateStore = useStateStore(); const { t } = useI18n(); @@ -24,6 +27,13 @@ const { viewSummary } = useSummaryDialog(); onMounted(() => (stateStore.rightDrawer = true)); onUnmounted(() => (stateStore.rightDrawer = false)); +const state = useState(); +const user = state.getUser(); +const dmsDialog = ref({ + show: false, + initialForm: {}, + rowsToCreateInvoiceIn: [], +}); const selectedRows = ref([]); const columns = computed(() => [ { @@ -108,8 +118,8 @@ const refreshKey = ref(0); const total = computed(() => selectedRows.value.reduce((item) => item?.price || 0, 0)); -const openCreateInvoiceIn = () => { - const rowsToCreateInvoiceIn = selectedRows.value +const openDmsUploadDialog = async () => { + dmsDialog.value.rowsToCreateInvoiceIn = selectedRows.value .filter( (agencyTerm) => agencyTerm.supplierFk === selectedRows.value?.[0].supplierFk ) @@ -120,20 +130,44 @@ const openCreateInvoiceIn = () => { totalPrice: total.value, })); - if (rowsToCreateInvoiceIn.length !== selectedRows.value.length) { + if (dmsDialog.value.rowsToCreateInvoiceIn.length !== selectedRows.value.length) { + dmsDialog.value.rowsToCreateInvoiceIn = []; + dmsDialog.value.initialForm = null; return notify(t('Two autonomous cannot be counted at the same time'), 'negative'); } - const params = encodeURI(JSON.stringify({ - supplierName: selectedRows.value?.[0].supplierName, - rows: rowsToCreateInvoiceIn, - })); + const dmsType = await axios + .get('DmsTypes/findOne', { + filter: { + where: { code: 'invoiceIn' }, + }, + }) + .then((res) => res.data); - router.push({ name: 'RouteAutonomousCreateInvoiceIn', query: { q: params } }); + dmsDialog.value.initialForm = { + description: selectedRows.value?.[0].supplierName, + companyFk: user.value.companyFk, + warehouseFk: user.value.warehouseFk, + dmsTypeFk: dmsType?.id, + }; + dmsDialog.value.show = true; +}; + +const onDmsSaved = async (dms, response) => { + if (response) { + await axios.post('AgencyTerms/createInvoiceIn', { + rows: dmsDialog.value.rowsToCreateInvoiceIn, + dms: response.data, + }); + } + dmsDialog.value.show = false; + dmsDialog.value.initialForm = null; + dmsDialog.value.rowsToCreateInvoiceIn = []; + refreshKey.value++; }; function navigateToRouteSummary(event, row) { - router.push({ name: 'RouteSummary', params: { id: row.routeFk } }) + router.push({ name: 'RouteSummary', params: { id: row.routeFk } }); } @@ -238,7 +272,12 @@ function navigateToRouteSummary(event, row) { name="preview" size="xs" color="primary" - @click.stop="viewSummary(props?.row?.routeFk, RouteSummary)" + @click.stop=" + viewSummary( + props?.row?.routeFk, + RouteSummary + ) + " > {{ t('Preview') }} @@ -255,7 +294,7 @@ function navigateToRouteSummary(event, row) { fab icon="vn:invoice-in-create" color="primary" - @click="openCreateInvoiceIn" + @click="openDmsUploadDialog" > {{ t('Create invoiceIn') }} @@ -263,6 +302,14 @@ function navigateToRouteSummary(event, row) { + + +