Deals

Fırsat adını "Kale Sağlık - Zoho CRM Kurulumu" biçiminde otomatik yazar; pipeline görünümünde her kart kim için ne satıldığını söyler, "Yeni Fırsat 12" gibi adlar kalmaz.

Modül
Deals
Tetik
Workflow · On Create / On Edit
Argüman
dealId = Deal Id
Uzunluk
120 satır Deluge
Güncelleme

Ne yapar

Önce Firma adını, o yoksa Kişi adını alır; fırsata bağlı ilk ürünün adını getRelatedRecords ile çeker ve ekler. Ürün ilişkisi alınamazsa hata vermez, yalnız firma/kişi adıyla devam eder. Üretilen ad mevcutla aynıysa kayda dokunmaz; farklıysa, kullanıcının elle yazdığı ad olsa bile her tetiklemede üzerine yazar. Firma, kişi ve ürün adının hiçbiri bulunamazsa mevcut ad olduğu gibi kalır. Elle yazılan adı korumak isterseniz Deals modülüne "Adı elle koru" gibi özel bir onay kutusu alanı ekleyip kurala "bu alan işaretli değilse" koşulunu koyabilirsiniz.

Kurulum mantığı

  1. 01

    Workflow Rules altında modül Deals, tetik On Create ve On Edit (On Edit koşulu: Account_Name ya da Contact_Name değiştiğinde). İlişkili listeye ürün eklemek fırsat alanlarını değiştirmediği için kuralın bu anda çalışmasını beklemeyin. Kayıt oluşturulurken ürün henüz bağlı değilse ad yalnız firma ya da kişi adıyla yazılır; sonradan eklenen ürün, kural bir sonraki çalıştığında (ör. Account_Name ya da Contact_Name değiştiğinde) ada eklenir.

  2. 02

    Eylem Function, argüman dealId, Deal Id alanına eşlenir.

  3. 03

    Ürün ilişkisi, Deals kaydındaki Products ilişkili listesinden okunur; org'unuzda ürünler alt form ya da farklı bir modüldeyse o bölüm uyarlanır.

Alan eşlemesi

Koda yazılan alanlar ve kendi org'unuzda dikkat etmeniz gerekenler.

AlanDeğerNot
Deal_Name<Firma veya Kişi> - <İlk ürün>Ayraç kısa tire.
Account_NameokunurÖncelikli kaynak.
Contact_NameokunurFirma yoksa.
Products (ilişkili)okunurYalnız ilk ürünün Product_Name'i.

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.updateDealNameWithAccountContactAndProduct(String dealId)
void automation.updateDealNameWithAccountContactAndProduct(String dealId)
{
try
{
	info "===== Deal Adı Güncelleme Başladı =====";
	info "Deal ID: " + dealId;

	if(dealId == null || dealId.trim() == "")
	{
		info "Deal ID boş.";
		return;
	}

	dealRecord = zoho.crm.getRecordById("Deals",dealId.toLong());

	if(dealRecord == null || dealRecord.isEmpty())
	{
		info "Deal bulunamadı.";
		return;
	}

	accountName = "";
	contactName = "";
	productName = "";

	accountLookup = dealRecord.get("Account_Name");

	if(accountLookup != null)
	{
		if(accountLookup.get("name") != null)
		{
			accountName = accountLookup.get("name").toString().trim();
		}
	}

	contactLookup = dealRecord.get("Contact_Name");

	if(contactLookup != null)
	{
		if(contactLookup.get("name") != null)
		{
			contactName = contactLookup.get("name").toString().trim();
		}
	}

	try
	{
		relatedProducts = zoho.crm.getRelatedRecords("Products","Deals",dealId.toLong(),1,200);

		if(relatedProducts != null && relatedProducts.size() > 0)
		{
			firstProduct = relatedProducts.get(0);

			if(firstProduct.get("Product_Name") != null)
			{
				productName = firstProduct.get("Product_Name").toString().trim();
			}
		}
	}
	catch (productError)
	{
		info "Ürün ilişkisi alınamadı: " + productError.toString();
	}

	baseName = "";

	if(accountName != "")
	{
		baseName = accountName;
	}
	else if(contactName != "")
	{
		baseName = contactName;
	}

	newDealName = "";

	if(baseName != "" && productName != "")
	{
		newDealName = baseName + " - " + productName;
	}
	else if(baseName != "")
	{
		newDealName = baseName;
	}
	else if(productName != "")
	{
		newDealName = productName;
	}

	if(newDealName == "")
	{
		info "Firma, kişi veya ürün adı bulunamadı.";
		return;
	}

	currentDealName = "";

	if(dealRecord.get("Deal_Name") != null)
	{
		currentDealName = dealRecord.get("Deal_Name").toString().trim();
	}

	if(currentDealName == newDealName)
	{
		info "Deal adı zaten güncel.";
		return;
	}

	updateMap = Map();
	updateMap.put("Deal_Name",newDealName);

	updateResponse = zoho.crm.updateRecord("Deals",dealId.toLong(),updateMap);
	info "Güncelleme sonucu: " + updateResponse;
}
catch (e)
{
	info "Hata: " + e.toString();
}
}
4 ADIMİzle düğmesi fonksiyonu adım adım aydınlatır.

Dikkat edilecekler

  • İç try/catch

    Ürün ilişkisi okuması ayrı try içinde; Products ilişkili listesi kapalı org'larda fonksiyon yine de firma adıyla tamamlanır.

  • On Edit döngüsü

    Kod updateRecord çağrısına options_map vermediği için fonksiyonun yazdığı Deal_Name workflow kurallarını yeniden tetiklemez; döngü oluşmaz. Aynı ad kontrolü yalnız gereksiz API çağrısını önler. Deal_Name değişikliğini izleyen başka bir workflow kuralınız varsa, bu yazma onu da çalıştırmaz.

İlgili kayıtlar

  1. 01
    Quotes

    Teklif fatura adresini teslimat adresine kopyala

    Teklifin fatura adresini teslimat adresine kopyalar. Fatura adresi tamamen boşsa dokunmaz; dolu teslimat adresini korumaz, üstüne yazar.

    Workflow · On Create / On Edit69 satır Deluge
  2. 02
    Quotes

    Teklif başlığını müşteri ve üründen üret

    Teklif başlığını "Ahmet Yılmaz - FUE Standart" biçiminde otomatik yazar; teklif listesi, PDF adı ve e-posta konusu kim için hangi ürün olduğunu ilk bakışta söyler.

    Workflow · On Create / On Edit111 satır Deluge
  3. 03
    Leads

    Mükerrer lead'leri telefondan birleştir

    Aynı telefon numarasıyla ikinci kez gelen lead'leri elle karşılaştırmadan tek kayda indirir; reklam formu, WhatsApp ve web sitesinden ayrı ayrı gelen kayıtlar tek lead'de toplanır.

    Workflow · On Create · On Edit (onay kutusu)300 satır Deluge

30+

proje

%99

müşteri memnuniyeti

3 kanal

kurulum sonrası destek

İletişim

Mevcut sisteminiz, hedefiniz ve takviminize göre somut bir teklif ve canlı demo hazırlıyoruz. Sözleşme öncesi taahhüt yok.

Görüşme planla

Bilgileriniz KVKK Aydınlatma Metni kapsamında işlenir. 24 saat içinde dönüş yapıyoruz.