Dokumen ini menjelaskan setiap field penting pada model
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)
14)
15)
16)
17)
18)
19)
20)
mail.activity beserta contoh nilai dan catatan implementasi yang sering berguna saat kustomisasi/analitik CRM. Fokusnya adalah pemahaman praktis—bagaimana field bekerja sendiri-sendiri dan dalam kombinasi.
Gambaran Singkat
mail.activityadalah sumber kebenaran untuk semua aktivitas (Call, Email, Meeting, To Do, Follow-up) yang menempel ke record target (mis.crm.lead).- Aktivitas dianggap “open” selama
date_donekosong. Saat diselesaikan, sistem mengisidate_donedan (bila relevan) menautkan meeting (calendar_event_id). - Overdue =
date_deadline< hari ini dandate_donemasih kosong → memicu badge merah di UI.
Penjelasan per Field
1) id (Integer, Primary Key)
- Arti: Identitas unik aktivitas.
- Contoh:
4275. - Catatan: Dipakai untuk join/reporting teknis; tidak tampil ke user.
2) res_model_id (Many2one → ir.model)
- Arti: Model teknis dari record target aktivitas.
- Contoh:
ir.model('crm.lead'). - Catatan: Pasangan teknis dari
res_model. Biasanya tidak user-facing; berguna untuk konsistensi & performa.
3) res_model (Char)
- Arti: Nama model target dalam bentuk string.
- Contoh:
"crm.lead","res.partner". - Catatan: Duplikasi ringan dari
res_model_iduntuk akses cepat/domain. Wajib cocok dengan model sebenarnya.
4) res_id (Integer)
- Arti: ID record target pada model
res_model. - Contoh:
1349(mengacu kecrm.lead(1349)). - Catatan: Aktivitas tidak bisa dibuat tanpa pasangan
res_model+res_id. Inilah alasan tombol Create hilang pada action global jika target tidak ditentukan.
5) res_name (Char, computed)
- Arti: Display name dari record target, disimpan sebagai teks untuk tampilan/pencarian cepat.
- Contoh:
"OPP-0231 | PT Sinar Jaya - Proposal". - Catatan: Membantu user mengenali konteks aktivitas tanpa membuka record target.
6) activity_type_id (Many2one → mail.activity.type)
- Arti: Tipe aktivitas—mengarahkan ikon, perilaku default, integrasi (mis. Meeting ↔ Calendar).
- Contoh:
First Call,Email,Meeting,Follow-up N+1. - Catatan:
- Tipe Meeting dapat membuat
calendar_event_id. - Tipe dengan kategori
phonecallsering dipakai untuk produktivitas telepon.
- Tipe Meeting dapat membuat
7) user_id (Many2one → res.users)
- Arti: Penanggung jawab aktivitas (assignee).
- Contoh:
user_id = 7 (budi@company.com). - Catatan: Menentukan siapa yang melihat aktivitas di My Activities dan menerima notifikasi.
8) request_partner_id (Many2one → res.partner)
- Arti: Pihak yang meminta aktivitas (jika relevan).
- Contoh:
PT Sinar Jaya (contact utama). - Catatan: Berguna untuk menandai inbound request (mis. permintaan demo), berbeda dari assignee.
9) recommended_activity_type_id (Many2one → mail.activity.type)
- Arti: Tipe aktivitas lanjutan yang direkomendasikan oleh sistem/aturan (mis. playbook).
- Contoh: Setelah First Call, sistem merekomendasikan
Follow-up N+1. - Catatan: Tidak wajib terisi; fungsionalitas ini dipakai UI untuk tombol “Done & Schedule Next”.
10) previous_activity_type_id (Many2one → mail.activity.type)
- Arti: Tipe aktivitas sebelumnya (jejak rantai aktivitas).
- Contoh: Jika saat ini Meeting,
previous_activity_type_idmungkinFirst Call. - Catatan: Membantu analitik alur (dari call → meeting → proposal).
11) summary (Char)
- Arti: Judul ringkas aktivitas (akan tampil di list/kanban/kalender).
- Contoh:
"First Call – cek kebutuhan modul CRM". - Catatan: Jika kosong, UI sering mengisi default dari
activity_type_id.name.
12) note (Text)
- Arti: Deskripsi/detail aktivitas (hasil telepon, agenda, poin penting).
- Contoh:
Call 10 menit; minat pada Odoo CRM + Helpdesk. Minta dikirimkan company profile & success story sektor manufaktur. - Catatan: Umumnya plain text; aman untuk logging internal.
13) date_deadline (Date)
- Arti: Tenggat aktivitas. Dipakai UI untuk overdue indicator.
- Contoh:
2025-09-20. - Catatan:
- Wajib diisi untuk manajemen pekerjaan yang sehat.
- Overdue =
date_deadline< hari ini dandate_donekosong.
14) date_done (Datetime)
- Arti: Waktu aktivitas ditandai selesai.
- Contoh:
2025-09-19 15:42:08. - Catatan:
- Diisi otomatis saat user klik Done.
- Menjadi pembeda utama open vs done (bukan field
active).
15) user_tz (Char / snapshot TZ)
- Arti: Zona waktu yang dipakai untuk menafsirkan tanggal pada UI user.
- Contoh:
"Asia/Jakarta". - Catatan: Membantu tampilan kalender/deadline konsisten dengan TZ user (tidak selalu disimpan manual oleh developer).
16) automated (Boolean)
- Arti: Penanda bahwa aktivitas dibuat otomatis (oleh sistem/aturan), bukan input manual.
- Contoh:
Trueuntuk aktivitas yang dibuat playbook saat masuk stage Qualified. - Catatan: Berguna untuk filter analitik: manual vs otomatis.
17) active (Boolean)
- Arti: Status arsip (archive). Jika
False, aktivitas di-“sembunyikan” dari tampilan normal. - Contoh:
True(default). - Catatan: Bukan penanda selesai. Aktivitas selesai =
date_doneterisi.
18) calendar_event_id (Many2one → calendar.event)
- Arti: Kaitan ke event kalender jika tipe aktivitas adalah Meeting.
- Contoh:
calendar.event(982) – “Demo CRM untuk PT Sinar Jaya”. - Catatan:
- Terisi saat user menjadwalkan meeting dari activity → membuka undangan/peserta/durasi.
- Memungkinkan sinkronisasi jadwal & undangan email.
19) create_uid, write_uid (Many2one → res.users)
- Arti: Siapa yang membuat & terakhir mengubah aktivitas.
- Contoh:
create_uid = admin,write_uid = budi. - Catatan: Berguna untuk audit dan troubleshooting.
20) create_date, write_date (Datetime)
- Arti: Kapan aktivitas dibuat & terakhir diubah.
- Contoh:
create_date = 2025-09-18 09:10:00,write_date = 2025-09-19 15:42:08. - Catatan: Standar Odoo; dipakai untuk timeline/analitik SLA.
Contoh Record Lengkap (Konteks CRM)
Skenario: Sales Budi menelpon calon pelanggan pada OpportunityOPP-0231 dan menjadwalkan meeting lanjutan.
id: 4275
res_model_id: ir.model('crm.lead') → sama dengan res_model = "crm.lead"
res_model: "crm.lead"
res_id: 1349 → mengarah ke OPP-0231
res_name: "OPP-0231 | PT Sinar Jaya - Proposal"
activity_type_id: mail.activity.type('First Call')
user_id: res.users('budi@company.com')
request_partner_id: res.partner('PT Sinar Jaya') → (opsional)
previous_activity_type_id: mail.activity.type('Marketing Response') → (opsional, jika ada rantai)
recommended_activity_type_id: mail.activity.type('Meeting') → sistem sarankan rapat
summary: "First Call – cek kebutuhan modul CRM"
note: "Call 12 menit. Tertarik CRM + Helpdesk. Meeting Selasa 10:00, butuh agenda & demo singkat."
user_tz: "Asia/Jakarta"
date_deadline: 2025-09-20
date_done: 2025-09-19 15:42:08 → terisi saat Budi menekan Done
automated: False
active: True
calendar_event_id: calendar.event(982) → terisi setelah klik “Schedule Meeting”
create_uid: res.users('admin')
create_date: 2025-09-18 09:10:00
write_uid: res.users('budi@company.com')
write_date: 2025-09-19 15:42:08
Interpretasi
- Aktivitas ini sudah selesai (
date_doneterisi). - Tenggat (
date_deadline) di masa depan/telah lewat tidak mempengaruhi status selesai. - Ada meeting yang terhubung (field
calendar_event_id) sebagai tindak lanjut. - Rantai aktivitas tercatat via
previous_activity_type_iddan rekomendasi berikutnya direcommended_activity_type_id.
Tips Kustomisasi & Analitik (Lanjutan)
- Filter aktivitas CRM saja:
domain=[('res_model','=','crm.lead')]. - Aktivitas open yang overdue:
domain=[('res_model','=','crm.lead'), ('date_done','=',False), ('date_deadline','<', context_today)]. - Produktivitas per tipe & outcome (dengan field kustom
x_outcome): pivot rows:activity_type_id, columns:x_outcome, measure:__count. - Trace rantai aktivitas: gunakan
previous_activity_type_id+recommended_activity_type_iduntuk melihat playbook adherence. - Meeting quality: join ke
calendar.event(durasi, peserta) viacalendar_event_id.
Praktik Terbaik (Best Practices)
- Selalu isi
date_deadlineuntuk semua aktivitas → menjaga kontrol overdue. - Gunakan tipe aktivitas yang konsisten (seed di
mail.activity.type) agar laporan bisa dibandingkan. - Tandai
automated=Trueuntuk aktivitas hasil playbook → analitik lebih jernih (manual vs otomatis). - Hindari mengarsipkan (
active=False) untuk menyembunyikan aktivitas open; gunakan Done (isidate_done) agar historis tetap rapi. - Untuk aktivitas Meeting, manfaatkan
calendar_event_idsupaya undangan & notulen tercatat.

