80 lines
2.9 KiB
JavaScript
80 lines
2.9 KiB
JavaScript
import { mailModels } from "@mail/../tests/mail_test_helpers";
|
|
import { mailDataHelpers } from "@mail/../tests/mock_server/mail_mock_server";
|
|
|
|
import { serializeDate, today } from "@web/core/l10n/dates";
|
|
|
|
export class MailActivity extends mailModels.MailActivity {
|
|
get_today_call_activities() {
|
|
/** @type {import("mock_models").MailActivityType} */
|
|
const MailActivityType = this.env["mail.activity.type"];
|
|
const activityTypeIds = MailActivityType.search([["category", "=", "phonecall"]])[0];
|
|
const store = new mailDataHelpers.Store();
|
|
this._format_call_activities(
|
|
this.search([
|
|
["activity_type_id", "in", activityTypeIds],
|
|
["user_id", "=", this.env.uid],
|
|
["date_deadline", "<=", serializeDate(today())],
|
|
]),
|
|
store
|
|
);
|
|
return store.get_result();
|
|
}
|
|
|
|
/** @param {number[]} ids */
|
|
_format_call_activities(ids, store) {
|
|
/** @type {import("mock_models").ResPartner} */
|
|
const ResPartner = this.env["res.partner"];
|
|
|
|
const activities = this.browse(ids);
|
|
const now = serializeDate(today());
|
|
for (const activity of activities) {
|
|
const state =
|
|
activity.date_deadline === now
|
|
? "today"
|
|
: activity.date_deadline < now
|
|
? "overdue"
|
|
: "planned";
|
|
const [record] = this.env[activity.res_model].search_read([
|
|
["id", "=", activity.res_id],
|
|
]);
|
|
const activityData = {
|
|
id: activity.id,
|
|
activity_category: "phonecall",
|
|
res_id: activity.res_id,
|
|
res_model: activity.res_model,
|
|
res_name: activity.res_name || record.display_name,
|
|
state,
|
|
user_id: activity.user_id,
|
|
date_deadline: activity.date_deadline,
|
|
};
|
|
let relatedPartner;
|
|
if (activity.res_model === "res.partner") {
|
|
[relatedPartner] = ResPartner.search_read([["id", "=", activity.res_id]]);
|
|
} else {
|
|
if (record.partner_id) {
|
|
[relatedPartner] = ResPartner.search_read([["id", "=", record.partner_id]]);
|
|
}
|
|
}
|
|
if (relatedPartner) {
|
|
activityData.partner = mailDataHelpers.Store.one(
|
|
ResPartner.browse(relatedPartner.id)
|
|
);
|
|
}
|
|
activityData.phone = record.phone || relatedPartner?.phone;
|
|
store.add(this.browse(activity.id), activityData);
|
|
}
|
|
}
|
|
|
|
/** @param {number[]} ids */
|
|
_to_store(store) {
|
|
super._to_store(...arguments);
|
|
for (const activity of this) {
|
|
if (activity.phone) {
|
|
store._add_record_fields(this.browse(activity.id), {
|
|
phone: activity.phone,
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|