oca-technical/odoo-bringout-oca-server-tools-base_changeset/base_changeset/static/src/components/changeset_popover.esm.js
2025-08-29 15:43:03 +02:00

53 lines
1.8 KiB
JavaScript

/** @odoo-module */
import {Component} from "@odoo/owl";
import {FormLabel} from "@web/views/form/form_label";
import Popover from "web.Popover";
export class BaseChangesetPopover extends Popover {
/*
Call the ORM to accept the change and refresh the form view
to update the field value.
*/
async applyChange(change_id) {
await this.props.record.model.orm.call(
"record.changeset.change",
"apply",
[[change_id]],
{
context: {set_change_by_ui: true},
}
);
this._close();
// Save the record first to prevent losing unsaved data on load.
await this.props.record.save();
await this.props.record.load();
await this.props.record.model.notify();
}
/*
Call the ORM to reject the change and only update the record's pending changes.
*/
async rejectChange(change_id) {
await this.props.record.model.orm.call(
"record.changeset.change",
"cancel",
[[change_id]],
{
context: {set_change_by_ui: true},
}
);
this._close();
this.props.record.changesetChanges =
await this.props.record.fetchChangesetChanges();
this.props.record.model.notify();
}
}
BaseChangesetPopover.template = "base_changeset.ChangesetPopover";
BaseChangesetPopover.props = ["fieldName", "popoverClass", "record", "title"];
export class BaseChangesetPopoverWrapper extends Component {}
BaseChangesetPopoverWrapper.components = {BaseChangesetPopover};
BaseChangesetPopoverWrapper.template = "base_changeset.ChangesetPopoverWrapper";
FormLabel.components = FormLabel.components || {};
Object.assign(FormLabel.components, {BaseChangesetPopoverWrapper});