odoo18/addons/sale/static/src/js/sale_progressbar_field.js

49 lines
1.5 KiB
JavaScript

/** @odoo-module **/
import { registry } from "@web/core/registry";
import { useService } from "@web/core/utils/hooks";
import {
KanbanProgressBarField,
kanbanProgressBarField,
} from "@web/views/fields/progress_bar/kanban_progress_bar_field";
import { useEffect } from "@odoo/owl";
/**
* A custom Component for the view of sales teams on the kanban view in the CRM app.
*
* The wanted behavior is to show a progress bar when an invoicing target is defined or show
* a link redirecting to the record's form view otherwise.
*/
export class SaleProgressBarField extends KanbanProgressBarField {
static template = "sale.SaleProgressBarField";
/**
* Anything used by the component is defined on the setup method.
*/
setup() {
super.setup();
this.actionService = useService("action");
this.orm = useService("orm");
useEffect(() => {
this.state.isInvoicingTargetDefined = this.props.record.data[this.props.maxValueField];
});
}
/**
* Display the form view of the record on click.
*/
async defineInvoicingTarget() {
const { resId, resModel } = this.props.record;
const action = await this.orm.call(resModel, "get_formview_action", [[resId]]);
this.actionService.doAction(action, { props: { mode: "edit" } });
}
}
export const saleProgressBarField = {
...kanbanProgressBarField,
component: SaleProgressBarField,
};
registry.category("fields").add("sales_team_progressbar", saleProgressBarField);