Skip to content

Commit c8f98e2

Browse files
committed
[KNOWAGE-9830] fix dossier inherit link type
1 parent 28cc705 commit c8f98e2

3 files changed

Lines changed: 90 additions & 26 deletions

File tree

src/modules/documentExecution/documentDetails/dialogs/dossierDesignerDialog/DocumentDetailDossierDesignerDialog.vue

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ import Divider from 'primevue/divider'
151151
import DashboardControllerSaveDialog from '@/modules/documentExecution/dashboard/DashboardControllerSaveDialog.vue'
152152
import { formatDateWithLocale } from '@/helpers/commons/localeHelper'
153153
import { v4 as uuidv4 } from 'uuid'
154-
import { getDossierDriverParameterUrlName, mergeDossierPlaceholderParameters, normalizeDossierTemplate, serializeDossierDriver } from '@/modules/documentExecution/documentDetails/dialogs/dossierDesignerDialog/DossierDesignerDriversHelper'
154+
import { getDossierDriverParameterUrlName, mergeDossierPlaceholderParameters, normalizeDossierTemplate, serializeDossierDriver, serializeInheritDriverForPersist } from '@/modules/documentExecution/documentDetails/dialogs/dossierDesignerDialog/DossierDesignerDriversHelper'
155155
156156
export default defineComponent({
157157
name: 'document-detail-dossier-designer-dialog',
@@ -674,6 +674,7 @@ export default defineComponent({
674674
.finally(() => this.setLoading(false))
675675
},
676676
async handleDrivers() {
677+
this.inheritedDrivers = false
677678
const objToSave = normalizeDossierTemplate(this.activeTemplate)
678679
objToSave.placeholders = objToSave.placeholders.filter((x) => x.label)
679680
const tempDrivers = objToSave.placeholders.filter((x) => x.label)
@@ -713,41 +714,46 @@ export default defineComponent({
713714
dossierUrlName: existing[0].parameterUrlName
714715
}
715716
} else {
716-
const newDriver = { ...placeholder.parameters[j] }
717-
newDriver.parameterUrlName = parameterUrlName
718-
newDriver.modifiable = 0
719-
delete newDriver.id
720-
newDriver.biObjectID = this.getDocument()?.id
721-
delete newDriver.type
722-
newDriver.prog = this.document?.drivers?.length ?? 1
717+
const newDriver = serializeInheritDriverForPersist(placeholder.parameters[j], this.getDocument()?.id, this.document?.drivers?.length ?? 1)
718+
if (!newDriver || !newDriver.biObjectID || !newDriver.parameterUrlName) {
719+
this.setError({
720+
title: this.$t('common.error.generic'),
721+
msg: this.$t('documentExecution.dossier.designerDialog.driverNotHandled', {
722+
driverName: placeholder.parameters[j].label,
723+
placeholderName: placeholder.imageName
724+
})
725+
})
726+
return
727+
}
723728
724-
this.setLoading(true)
725-
await this.$http
726-
.post(import.meta.env.VITE_KNOWAGE_CONTEXT + `/restful-services/2.0/documentdetails/${newDriver.biObjectID}/drivers`, newDriver, {
729+
try {
730+
this.setLoading(true)
731+
await this.$http.post(import.meta.env.VITE_KNOWAGE_CONTEXT + `/restful-services/2.0/documentdetails/${newDriver.biObjectID}/drivers`, newDriver, {
727732
headers: {
728733
'X-Disable-Errors': 'true'
729734
}
730735
})
731-
.then(() => {
732-
placeholder.parameters[j] = {
733-
urlName: newDriver.parameterUrlName,
734-
type: 'dynamic',
735-
dossierUrlName: newDriver.dossierUrlName
736-
}
736+
737+
placeholder.parameters[j] = {
738+
urlName: newDriver.parameterUrlName,
739+
type: 'dynamic',
740+
dossierUrlName: newDriver.parameterUrlName
741+
}
742+
} catch {
743+
this.setError({
744+
title: this.$t('common.error.generic'),
745+
msg: this.$t('documentExecution.documentDetails.drivers.persistError')
737746
})
738-
.catch(() =>
739-
this.setError({
740-
title: this.$t('common.error.generic'),
741-
msg: this.$t('documentExecution.documentDetails.drivers.persistError')
742-
})
743-
)
744-
.finally(() => this.setLoading(false))
747+
return
748+
} finally {
749+
this.setLoading(false)
750+
}
745751
746752
this.setLoading(true)
747753
await this.$http
748754
.get(import.meta.env.VITE_KNOWAGE_CONTEXT + `/restful-services/2.0/documentdetails/${newDriver.biObjectID}/drivers`)
749755
.then((response: AxiosResponse<any>) => {
750-
if (this.document && this.document.drivers) this.document.drivers = response.data
756+
if (this.document) this.document.drivers = response.data
751757
})
752758
.finally(() => this.setLoading(false))
753759
}

src/modules/documentExecution/documentDetails/dialogs/dossierDesignerDialog/DossierDesignerDriversHelper.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,34 @@ export function serializeDossierDriver(driver: iDossierDriver): iDossierDriver |
5454
}
5555
}
5656

57+
export function serializeInheritDriverForPersist(driver: iDossierDriver, biObjectID?: number, prog?: number): Partial<iDriver> | null {
58+
const normalizedDriver = normalizeDossierDriver(driver)
59+
const parameterUrlName = getDossierDriverParameterUrlName(normalizedDriver)
60+
if (!parameterUrlName) return null
61+
62+
const {
63+
id: _id,
64+
type: _type,
65+
urlName: _urlName,
66+
dossierUrlName: _dossierUrlName,
67+
urlNameDescription: _urlNameDescription,
68+
value: _value,
69+
inherit: _inherit,
70+
newDriver: _newDriver,
71+
numberOfErrors: _numberOfErrors,
72+
isChanged: _isChanged,
73+
...persistableDriver
74+
} = normalizedDriver
75+
76+
return {
77+
...persistableDriver,
78+
parameterUrlName,
79+
biObjectID,
80+
modifiable: 0,
81+
prog
82+
}
83+
}
84+
5785
export function mergeDossierPlaceholderParameters(existingParameters: iDossierDriver[] = [], availableDrivers: iDriver[] = []): iDossierDriver[] {
5886
const normalizedExistingParameters = existingParameters.map((driver) => normalizeDossierDriver(driver))
5987
const mergedParameters = normalizedExistingParameters.map((driver) => {

src/modules/documentExecution/documentDetails/dialogs/dossierDesignerDialog/__tests__/DossierDesignerDriversHelper.spec.ts

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { describe, expect, it } from 'vitest'
22
import type { iDriver } from '@/modules/documentExecution/documentDetails/DocumentDetails'
33
import type { iDossierDriver } from '../DossierTemplate'
4-
import { mergeDossierPlaceholderParameters, serializeDossierDriver } from '../DossierDesignerDriversHelper'
4+
import { mergeDossierPlaceholderParameters, serializeDossierDriver, serializeInheritDriverForPersist } from '../DossierDesignerDriversHelper'
55

66
describe('mergeDossierPlaceholderParameters', () => {
77
it('preserves saved static values while backfilling parameterUrlName from driver metadata', () => {
@@ -43,3 +43,33 @@ describe('serializeDossierDriver', () => {
4343
})
4444
})
4545
})
46+
47+
describe('serializeInheritDriverForPersist', () => {
48+
it('removes dossier-only fields and keeps the document driver payload expected by documentdetails drivers', () => {
49+
const serialized = serializeInheritDriverForPersist({
50+
id: 9,
51+
label: 'Family',
52+
parameterUrlName: 'Family',
53+
parID: 10,
54+
modifiable: 1,
55+
prog: 3,
56+
parameter: { id: 7, type: 'STRING' } as any,
57+
type: 'inherit',
58+
urlName: 'Family',
59+
dossierUrlName: 'DOSSIER_FAMILY',
60+
urlNameDescription: 'Family description',
61+
value: 'Food',
62+
inherit: true
63+
}, 12, 4)
64+
65+
expect(serialized).toEqual({
66+
label: 'Family',
67+
parameterUrlName: 'Family',
68+
parID: 10,
69+
modifiable: 0,
70+
prog: 4,
71+
parameter: { id: 7, type: 'STRING' },
72+
biObjectID: 12
73+
})
74+
})
75+
})

0 commit comments

Comments
 (0)