Recommended change in dc_delete

In the function dc_delete(_event, _triggerForm, _noDialog) in the model svy_nav_base.js on the Line 662, the function dc_delete_pre_action() is called.
I would like to override this function dc_delete_pre_action() to delete some relation before the selected record is deleted.
The function dc_delete_pre_action() returns a true or a false and if a false is returned, the selected record should not be deleted.

So my recommended change could look about that:

if (_answer == _ok || _noDialog) {
	databaseManager.startTransaction()
		
	var _succes = false
	if(dc_delete_pre_action(forms[_form].foundset, _multiDelete)){
              _succes = forms[_form].controller.deleteRecord()
              dc_delete_post(forms[_form].foundset, _multiDelete)
	}

	if (_succes) {
		databaseManager.commitTransaction()
	} else {
		databaseManager.rollbackTransaction()
		_return = -1
                globals.svy_mod_dialogs_global_showWarningDialog(i18n.getI18NMessage('svy.fr.lbl.record_delete'), i18n.getI18NMessage('svy.fr.dlg.delete_cancel'), i18n.getI18NMessage('svy.fr.lbl.ok'))
	}

	if (forms[_form].controller.getMaxRecordIndex() < 1) {
		globals.svy_nav_dc_setStatus('browse', _form);
	}
}

Is that possible to implement?

Hi ttmybta,

I implemented it as following:

	if (_answer == _ok || _noDialog) {
		databaseManager.startTransaction()
		
		_methodReturn = dc_delete_pre_action(foundset, _multiDelete);
		if (_methodReturn == -1) {
			return -1;
		}
		var _succes = controller.deleteRecord()

		dc_delete_post(foundset, _multiDelete)

		if (_succes) {
			databaseManager.commitTransaction()
		} else {
			_return = -1
			databaseManager.rollbackTransaction()
			globals.svy_mod_dialogs_global_showWarningDialog(i18n.getI18NMessage('svy.fr.lbl.record_delete'), i18n.getI18NMessage('svy.fr.dlg.delete_cancel'), i18n.getI18NMessage('svy.fr.lbl.ok'))
		}

	}

I hope that will also work for you.

Regards Sanneke

Great!
Thank you, that is exactly what we needed.