📌 Cập Nhật Lognote Từ Database Trong Odoo CRM
1️⃣ Kiểm Tra Lognote Hiện Có Của CRM Lead
Trước khi cập nhật hoặc xóa lognote, kiểm tra các lognote hiện có bằng câu lệnh:
SELECT id, create_date, body, message_type, subtype_id
FROM mail_message
WHERE model = 'crm.lead' AND res_id = 123
ORDER BY create_date DESC;
🔹 Giải thích:
- Lấy danh sách lognote theo thứ tự mới nhất (
ORDER BY create_date DESC
). - Kiểm tra
subtype_id
để xác định loại tin nhắn (2 là lognote).
2️⃣ Cập Nhật Lognote Mới Nhất Của CRM Lead
Nếu chỉ muốn cập nhật lognote mới nhất, sử dụng:
UPDATE mail_message
SET body = '<p>Khách hàng đã đặt lịch hẹn vào tuần sau.</p>', write_date = NOW()
WHERE id = (
SELECT id FROM mail_message
WHERE model = 'crm.lead' AND res_id = 123
ORDER BY create_date DESC
LIMIT 1
);
🔹 Chỉ cập nhật lognote gần nhất thay vì toàn bộ lịch sử.
3️⃣ Thêm Lognote Và Gửi Thông Báo Cho Người Quản Lý
Nếu muốn tự động gửi thông báo khi cập nhật lognote, chèn thêm vào bảng mail_notification
:
WITH new_message AS (
INSERT INTO mail_message (create_date, model, res_id, body, message_type, subtype_id)
VALUES (NOW(), 'crm.lead', 123, '<p>Khách hàng đang cân nhắc quyết định mua hàng.</p>', 'comment', 2)
RETURNING id
)
INSERT INTO mail_notification (message_id, notification_type, is_read)
SELECT id, 'email', FALSE FROM new_message;
🔹 Giải thích:
- Bước 1: Thêm lognote vào
mail_message
. - Bước 2: Lấy
message_id
của lognote mới và chèn vàomail_notification
. - Bước 3: Tạo thông báo dạng email (
notification_type = 'email'
).
4️⃣ Xóa Lognote Cũ Hơn 6 Tháng
Nếu muốn dọn dẹp lognote cũ, bạn có thể xóa những lognote hơn 6 tháng tuổi:
DELETE FROM mail_message
WHERE model = 'crm.lead'
AND create_date < NOW() - INTERVAL '6 months';
⚠ Cẩn thận! Trước khi xóa, kiểm tra số lượng lognote cũ bằng:
SELECT COUNT(*) FROM mail_message
WHERE model = 'crm.lead'
AND create_date < NOW() - INTERVAL '6 months';
🔥 Tổng Kết
✅ Kiểm tra lognote hiện có: SELECT * FROM mail_message ...
✅ Cập nhật lognote mới nhất: UPDATE mail_message ... WHERE id = (SELECT id ... LIMIT 1);
✅ Thêm lognote và gửi thông báo: INSERT INTO mail_message ... RETURNING id; INSERT INTO mail_notification ...
✅ Xóa lognote cũ: DELETE FROM mail_message WHERE create_date < NOW() - INTERVAL '6 months';
🚀 Bạn có muốn bổ sung thao tác nào không?