diff --git a/addons/web/static/src/views/fields/many2one/many2one_field.js b/addons/web/static/src/views/fields/many2one/many2one_field.js index eec6ccd950b..4a7a6e97d10 100644 --- a/addons/web/static/src/views/fields/many2one/many2one_field.js +++ b/addons/web/static/src/views/fields/many2one/many2one_field.js @@ -188,7 +188,11 @@ export class Many2OneField extends Component { } } onExternalBtnClick() { - this.openDialog(this.resId); + if (this.props.openTarget === "current") { + this.openAction(); + } else { + this.openDialog(this.resId); + } } async onBarcodeBtnClick() { const barcode = await BarcodeScanner.scanBarcode(); @@ -259,6 +263,7 @@ Many2OneField.props = { relation: { type: String, optional: true }, string: { type: String, optional: true }, canScanBarcode: { type: Boolean, optional: true }, + openTarget: { type: String, validate: (v) => ["current", "new"].includes(v), optional: true }, }; Many2OneField.defaultProps = { canOpen: true, @@ -270,6 +275,7 @@ Many2OneField.defaultProps = { searchLimit: 7, string: "", canScanBarcode: false, + openTarget: "current", }; Many2OneField.displayName = _lt("Many2one"); @@ -295,6 +301,7 @@ Many2OneField.extractProps = ({ attrs, field }) => { string: attrs.string || field.string, createNameField: attrs.options.create_name_field, canScanBarcode: canScanBarcode, + openTarget: attrs.open_target, }; }; diff --git a/addons/web/static/src/views/fields/many2one/many2one_field.xml b/addons/web/static/src/views/fields/many2one/many2one_field.xml index bb596bf9e01..beb27606cdb 100644 --- a/addons/web/static/src/views/fields/many2one/many2one_field.xml +++ b/addons/web/static/src/views/fields/many2one/many2one_field.xml @@ -45,7 +45,8 @@