odoo18/addons/hr_holidays/static/src/views/hooks.js

72 lines
2.3 KiB
JavaScript

/** @odoo-module **/
import { _t } from "@web/core/l10n/translation";
import { useService, useOwnedDialogs } from "@web/core/utils/hooks";
import { FormViewDialog } from "@web/views/view_dialogs/form_view_dialog";
import { useComponent } from "@odoo/owl";
export function formatNumber(lang, number, maxDecimals = 2) {
const numberFormat = new Intl.NumberFormat(lang, { maximumFractionDigits: maxDecimals });
return numberFormat.format(number);
}
export function useMandatoryDays(props) {
return (info) => {
const date = luxon.DateTime.fromJSDate(info.date).toISODate();
const mandatoryDay = props.model.mandatoryDays[date];
if (mandatoryDay) {
return [`hr_mandatory_day hr_mandatory_day_${mandatoryDay}`];
}
return [];
};
}
export function useLeaveCancelWizard() {
const action = useService("action");
return (leaveId, callback) => {
action.doAction(
{
name: _t("Cancel Time Off"),
type: "ir.actions.act_window",
res_model: "hr.holidays.cancel.leave",
target: "new",
views: [[false, "form"]],
context: {
default_leave_id: leaveId,
},
},
{
onClose: callback,
}
);
};
}
export function useNewAllocationRequest() {
const addDialog = useOwnedDialogs();
const component = useComponent();
return async (employeeId, holidayStatusId) => {
const context = {
form_view_ref: "hr_holidays.hr_leave_allocation_view_form_dashboard",
is_employee_allocation: true,
};
if (employeeId) {
context["default_employee_id"] = employeeId;
context["form_view_ref"] =
"hr_holidays.hr_leave_allocation_view_form_manager_dashboard";
}
if (holidayStatusId) {
context["default_holiday_status_id"] = holidayStatusId;
}
addDialog(FormViewDialog, {
resModel: "hr.leave.allocation",
title: _t("New Allocation"),
context: context,
onRecordSaved: () => {
component.env.timeOffBus.trigger("update_dashboard");
},
});
};
}