Ne yapar
Kişiye bağlı görevleri ilişkili listeden tek istekle çeker (yalnız 1. sayfa, en fazla 200 kayıt); bunlar içinde Completed olmayanların hepsini kapatır, sayaçları loglar. Görev başlığına bakmaz. 200'den fazla görevi olan kişide ilk sayfaya girmeyen görevler açık kalır.
Kurulum mantığı
- 01
Workflow Rules altında modül Contacts; tetik olarak ilişkinin bittiğini gösteren alan değişimini seçin (örn. bir picklist "Pasif" olduğunda). Fırsat kapanışına bağlamak isterseniz kuralı Deals modülünde kurun (örn. Stage kapanış aşamasına geçtiğinde) ve
contactIdargümanını fırsatın Contact Name alanındaki kişinin Contact Id değerine eşleyin. Bu durumda yalnız o kişinin görevleri kapanır; kişinin başka açık fırsatlarına ait görevler de buna dahildir. - 02
Eylem Function, argüman
contactId, Contact Id alanına eşlenir. - 03
Başlık filtresi gerekiyorsa
if(taskId != "" && taskStatus != "Completed")satırına eklenir.
Alan eşlemesi
Koda yazılan alanlar ve kendi org'unuzda dikkat etmeniz gerekenler.
| Alan | Değer | Not |
|---|---|---|
| Tasks (ilişkili) | okunur | getRelatedRecords("Tasks","Contacts",…,1,200); kod yalnız ilk sayfayı okur. 200'den fazla görevi olan kayıtta kalan görevler açık kalır, bunun için sayfalama gerekir. |
| Status (Tasks) | Completed | API değeri; arayüz dilinden bağımsız. |
Deluge kodu
Kodu olduğu gibi kopyalayın; değiştirmeniz gereken yerler yukarıdaki tabloda işaretli. İzle düğmesi, fonksiyonu adım adım okutur.
void automation.closeAllOpenContactTasks(String contactId)
{
try
{
info "===== Contact Açık Görevlerini Kapatma Başladı =====";
info "Contact ID: " + contactId;
if(contactId == null || contactId.trim() == "")
{
info "Contact ID boş.";
return;
}
contactRecord = zoho.crm.getRecordById("Contacts",contactId.toLong());
if(contactRecord == null || contactRecord.isEmpty())
{
info "Contact bulunamadı.";
return;
}
taskRecords = zoho.crm.getRelatedRecords("Tasks","Contacts",contactId.toLong(),1,200);
if(taskRecords == null || taskRecords.size() == 0)
{
info "Contact'a bağlı görev bulunamadı.";
return;
}
closedCount = 0;
skippedCount = 0;
for each taskRecord in taskRecords
{
taskId = "";
if(taskRecord.get("id") != null)
{
taskId = taskRecord.get("id").toString();
}
taskStatus = "";
if(taskRecord.get("Status") != null)
{
taskStatus = taskRecord.get("Status").toString();
}
if(taskId != "" && taskStatus != "Completed")
{
taskUpdateMap = Map();
taskUpdateMap.put("Status","Completed");
taskUpdateResponse = zoho.crm.updateRecord("Tasks",taskId.toLong(),taskUpdateMap);
info "Task güncellendi: " + taskId + " | Sonuç: " + taskUpdateResponse;
closedCount = closedCount + 1;
}
else
{
skippedCount = skippedCount + 1;
}
}
info "Kapatılan görev sayısı: " + closedCount;
info "Atlanan görev sayısı: " + skippedCount;
}
catch (e)
{
info "Hata: " + e.toString();
}
}Dikkat edilecekler
- Kişi kalıcıdır
Kişi kaydı dönüşümle başka modüle geçmez, müşteriyle ilgili görevler ilişki boyunca aynı kayıt üzerinde birikir. Fonksiyon görevleri başka bir koşula bakmadan kapattığı için yanlış tetik koşulu, aktif müşterinin gerçek görevlerini kapatır. Koşulu dar tutun.
- Toplu kapanış
updateRecordoptions_mapolmadan çağrıldığı için Tasks modülündeki Workflow Rules bu kapanışlarda tetiklenmez, kurala bağlı bildirim de gitmez; ekip fark etmeden liste boşalabilir, tetik seçimini ekiple paylaşın.
İlgili kayıtlar
- 04Contacts
Mükerrer kişileri telefon ve e-postadan birleştir
Aynı telefon ya da aynı e-postayla açılmış kişi kayıtlarını tek kayda indirir; lead sürümünün Contacts karşılığı, üstüne e-posta eşleşmesi ekler.
- 05Leads · Tasks
Lead'in tüm açık görevlerini kapat
Lead kaybedildiğinde ya da nitelikli bulunmadığında üzerinde kalan tüm açık görevleri tek seferde tamamlandı yapar; temsilcinin görev listesinde ölü lead'lerin hatırlatmaları birikmez.
- 10Contacts
Kişi telefonlarını +90 biçimine getir
Kişi kaydındaki Telefon ve Mobil alanlarında 05…, 5…, 90… ya da 0090… ile girilmiş numaraları +90… biçimine çevirir; WhatsApp, SMS ve santral entegrasyonları bu numaraları tek biçimde alır.