Skip to main content

Cập Nhật Lognote Từ Database Trong Odoo ERP - CRM Lead

· 3 min read

Update Lognote

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:

  1. Bước 1: Thêm lognote vào mail_message.
  2. Bước 2: Lấy message_id của lognote mới và chèn vào mail_notification.
  3. 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?