void Deal_Creation_From_Trader_Portal()
{
// >>>>>>>>>-------------------- Contact Creation ---------------------- <<<<<<<<<
Email = "TestHassnain@gmail.com";
Phone = "03332425224";
Contact_name = "Hassnain Test";
contactfirstName = if(Contact_name.contains(" "),Contact_name.getPrefix(" "),Contact_name);
contactlastName = if(Contact_name.contains(" "),Contact_name.getSuffix(" "),"");
//check if conatct exists with the above email
api_url = "https://www.zohoapis.com/crm/v2/Contacts/search?criteria=(Email:equals:" + Email + ")";
contactResponse = invokeurl
[
	url :api_url
	type :GET
	connection:"zoho_crm"
];
contactId = "";
if(contactResponse.contains("data") && !contactResponse.get("data").isEmpty())
{
	contactId = contactResponse.get("data").get(0).get("id");
	info "Contact already exists with ID: " + contactId;
}
else
{
	//creating new contact
	apiDomain = "https://www.zohoapis.com";
	version = "v2";
	contact_api_url = apiDomain + "/crm/" + version + "/Contacts";
	contactPayload = {"data":{{"Email":Email,"First_Name":contactfirstName,"Last_Name":contactlastName,"Phone":Phone}}};
	contact_data_json = contactPayload.toString();
	contactCreateResponse = invokeurl
	[
		url :contact_api_url
		type :POST
		parameters:contact_data_json
		connection:"zoho_crm"
	];
	contactId = contactCreateResponse.get("data").get(0).get("details").get("id");
	if(contactCreateResponse.contains("data") && !contactCreateResponse.get("data").isEmpty())
	{
		contactId = contactCreateResponse.get("data").get(0).get("details").get("id");
		info "New Contact Created with ID: " + contactId;
	}
	else
	{
		info "Error: Failed to create Contact.";
	}
}
// >>>>>>>>>-------------------- Account Creation ---------------------- <<<<<<<<<<
// Account Details
// 	Account_name=buyer_name;
Account_name = "ERP Test";
//checking if account with same name exists
api_url = "https://www.zohoapis.com/crm/v2/Accounts/search?criteria=(Account_Name:equals:" + Account_name + ")";
accountResponse = invokeurl
[
	url :api_url
	type :GET
	connection:"zoho_crm"
];
accountId = "";
if(accountResponse.contains("data") && !accountResponse.get("data").isEmpty())
{
	accountId = accountResponse.get("data").get(0).get("id");
	info "Account already exist with id: " + accountId;
}
else
{
	// *Create a new Account*
	newAccount = Map();
	newAccount.put("Account_Name",Account_name);
	accountPayload = Map();
	accountList = List();
	accountList.add(newAccount);
	accountPayload.put("data",accountList);
	account_data_json = accountPayload.toString();
	accountCreateResponse = invokeurl
	[
		url :"https://www.zohoapis.com/crm/v2/Accounts"
		type :POST
		parameters:account_data_json
		connection:"zoho_crm"
	];
	accountId = "";
	accountId = accountCreateResponse.get("data").get(0).get("details").get("id");
	if(accountCreateResponse.contains("data") && !accountCreateResponse.get("data").isEmpty())
	{
		accountId = accountCreateResponse.get("data").get(0).get("details").get("id");
		info "New Account created with id " + accountId;
	}
	else
	{
		info "Error: Failed to create Account.";
		return;
	}
}
// >>>>>>>>>-------------------- Account Creation ---------------------- <<<<<<<<<<
//Deal info
// Deal_Name=Title;
// Listing_Status = status;  //Status
// Deal_Owner = seller_name;
// Closing_Date = dealCloseDate;
// Deal_Description = product_description;
// Acquisition_Cost = addOn;// (amount)
// Amount = dealTotal;
// Payment_Terms = payment_terms;
// Trader_Platform_Link = listingLink
Deal_Name = "new Hassnain deal";
Status = "newly created";
Closing_Date = "2025-03-08";
Deal_Description = "just creted this new deal";
Amount = "3500";
// Payment_Terms = ;
// Trader_Platform_Link =
// Deal_Owner = {"name":"Demo User2","id":"4685069000010160001","email":"user2@demo1.rebiz.com"};
//check if Deal exists
deal_name = "New Khizar Business Deal";
api_url = "https://www.zohoapis.com/crm/v2/Deals/search?criteria=(Deal_Name:equals:" + Deal_Name + ")";
accountResponse = invokeurl
[
	url :api_url
	type :GET
	connection:"zoho_crm"
];
if(accountResponse.contains("data") && !accountResponse.get("data").isEmpty())
{
	accountId = accountResponse.get("data").get(0).get("id");
	info "Deal already exist with id: " + accountId;
}
else
{
	//-------------creating-new-Deal-------------------
	dealDetails = Map();
	dealDetails.put("Deal_Name",Deal_Name);
	dealDetails.put("Closing_Date",Closing_Date);
	dealDetails.put("Amount",Amount);
	//dealDetails.put("Owner",Deal_Owner);
	dealDetails.put("Account_Name",accountId);
	dealDetails.put("Contact_Name",contactId);
	dealPayload = Map();
	dealList = List();
	dealList.add(dealDetails);
	dealPayload.put("data",dealList);
	deal_data_json = dealPayload.toString();
	dealResponse = invokeurl
	[
		url :"https://www.zohoapis.com/crm/v2/Deals"
		type :POST
		parameters:deal_data_json
		connection:"zoho_crm"
	];
	dealId = "";
	info "Deal Response" + dealResponse;
	if(dealResponse.contains("data") && !dealResponse.get("data").isEmpty())
	{
		dealId = dealResponse.get("data").get(0).get("details").get("id");
		info " New Deal created with id " + dealId;
	}
	else
	{
		info "Error: Failed to create Deal.";
		return;
	}
}
}