openSOURCE

openSOURCE

Did You Know?

Level up your quality of work

Lampiran

Referensi Field mail.activity

Estimated reading: 6 minutes 40 views
Dokumen ini menjelaskan setiap field penting pada model 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.activity adalah 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_done kosong. Saat diselesaikan, sistem mengisi date_done dan (bila relevan) menautkan meeting (calendar_event_id).
  • Overdue = date_deadline < hari ini dan date_done masih 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_id untuk akses cepat/domain. Wajib cocok dengan model sebenarnya.

4) res_id (Integer)

  • Arti: ID record target pada model res_model.
  • Contoh: 1349 (mengacu ke crm.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 phonecall sering dipakai untuk produktivitas telepon.

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_id mungkin First 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 dan date_done kosong.

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: True untuk 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_done terisi.

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 Opportunity OPP-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_done terisi).
  • 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_id dan rekomendasi berikutnya di recommended_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_id untuk melihat playbook adherence.
  • Meeting quality: join ke calendar.event (durasi, peserta) via calendar_event_id.

Praktik Terbaik (Best Practices)

  1. Selalu isi date_deadline untuk semua aktivitas → menjaga kontrol overdue.
  2. Gunakan tipe aktivitas yang konsisten (seed di mail.activity.type) agar laporan bisa dibandingkan.
  3. Tandai automated=True untuk aktivitas hasil playbook → analitik lebih jernih (manual vs otomatis).
  4. Hindari mengarsipkan (active=False) untuk menyembunyikan aktivitas open; gunakan Done (isi date_done) agar historis tetap rapi.
  5. Untuk aktivitas Meeting, manfaatkan calendar_event_id supaya undangan & notulen tercatat.

Leave a Comment

Share this Doc

Referensi Field mail.activity

Or copy link

CONTENTS