string button.send_doc_via_docu_sign()
{
Ownership_Change_Request_id = "5971686000098845399";
get_Details = zoho.crm.getRecordById("Ownership_Change_Request",Ownership_Change_Request_id);
//info get_Details;
customer_id = get_Details.get("Customer_Name").get("id");
//info customer_id;
contact_Details = zoho.crm.getRecordById("Contacts",customer_id);
//info contact_Details;
buyer_email = contact_Details.get("Email");
info buyer_email;
buyer_name = contact_Details.get("Full_Name");
info buyer_name;
// Step 1: Get Attachment from Ownership Change Request
OCR_attachments = zoho.crm.getRelatedRecords("Attachments","Ownership_Change_Request",Ownership_Change_Request_id);
if(OCR_attachments.size() > 0)
{
firstAttachment = OCR_attachments.get(0);
attachmentId = firstAttachment.get("id");
// Step 2: Download the document from CRM
response1 = invokeurl
[
url :"https://www.zohoapis.com/crm/v8/Ownership_Change_Request/" + Ownership_Change_Request_id + "/Attachments/" + attachmentId
type :GET
connection:"newzohocrm"
];
// Step 3: Convert to Base64
base64_pdf = zoho.encryption.base64Encode(response1);
// Step 4: Prepare document map for DocuSign
doc = Map();
doc.put("documentBase64",base64_pdf);
doc.put("name","Sale Purchase Agreement");
doc.put("fileExtension","docx");
doc.put("documentId","1");
// Step 5: Signers' Info
buyer_email = contact_Details.get("Email");
buyer_name = contact_Details.get("Full_Name");
// Joint Buyer
joint_buyer_name = "Shahzad Joint";
joint_buyer_email = "muhammad.kaleem@leosops.com";
// Manager
manager_name = "Leos";
manager_email = "m.awais@leosuk.com";
// ===== SIGNER 1: Buyer =====
sign_here_buyer = List();
sign_here_buyer.add({"anchorString":"Signed by Individual Purchaser","anchorUnits":"pixels","anchorXOffset":"170","anchorYOffset":"28"});
sign_here_buyer.add({"anchorString":"Signed for and on behalf of the Purchaser","anchorUnits":"pixels","anchorXOffset":"175","anchorYOffset":"12"});
// Initial field
initial_here_buyer = List();
initial_here_buyer.add({"anchorString":"Purchaser’s initials","anchorUnits":"pixels","anchorXOffset":"12","anchorYOffset":"-7"});
// Date Signed field
date_signed_buyer = List();
date_signed_buyer.add({"anchorString":"Date signed:","anchorUnits":"pixels","anchorXOffset":"175","anchorYOffset":"10"});
tabs_buyer = Map();
tabs_buyer.put("signHereTabs",sign_here_buyer);
tabs_buyer.put("initialHereTabs",initial_here_buyer);
tabs_buyer.put("dateSignedTabs",date_signed_buyer);
signer1 = Map();
signer1.put("email",buyer_email);
signer1.put("name",buyer_name);
signer1.put("recipientId","1");
signer1.put("routingOrder","1");
signer1.put("tabs",tabs_buyer);
// ===== SIGNER 2: Joint Buyer =====
sign_here_joint = List();
sign_here_joint.add({"anchorString":"Signed by Joint Individual Purchaser","anchorUnits":"pixels","anchorXOffset":"175","anchorYOffset":"28"});
initial_here_joint = List();
initial_here_joint.add({"anchorString":"Initial by Joint Individual Purchaser","anchorUnits":"pixels","anchorXOffset":"175","anchorYOffset":"28"});
date_signed_joint = List();
date_signed_joint.add({"anchorString":"Date Signed by Joint Individual Purchaser","anchorUnits":"pixels","anchorXOffset":"175","anchorYOffset":"28"});
tabs_joint = Map();
tabs_joint.put("signHereTabs",sign_here_joint);
tabs_joint.put("initialHereTabs",initial_here_joint);
tabs_joint.put("dateSignedTabs",date_signed_joint);
signer2 = Map();
signer2.put("email",joint_buyer_email);
signer2.put("name",joint_buyer_name);
signer2.put("recipientId","2");
signer2.put("routingOrder","2");
signer2.put("tabs",tabs_joint);
// ===== SIGNER 3: Develper =====
sign_here_manager = List();
sign_here_manager.add({"anchorString":"Signed for and on behalf of Developer:","anchorUnits":"pixels","anchorXOffset":"175","anchorYOffset":"28"});
initial_here_manager = List();
initial_here_manager.add({"anchorString":"Seller’s initials","anchorUnits":"pixels","anchorXOffset":"175","anchorYOffset":"-3"});
date_signed_manager = List();
date_signed_manager.add({"anchorString":"Date Signed by Seller","anchorUnits":"pixels","anchorXOffset":"175","anchorYOffset":"28"});
tabs_manager = Map();
tabs_manager.put("signHereTabs",sign_here_manager);
tabs_manager.put("initialHereTabs",initial_here_manager);
tabs_manager.put("dateSignedTabs",date_signed_manager);
signer3 = Map();
signer3.put("email",manager_email);
signer3.put("name",manager_name);
signer3.put("recipientId","3");
signer3.put("routingOrder","3");
signer3.put("tabs",tabs_manager);
// Step 6: Recipients map
recipients = Map();
recipients.put("signers",{signer1,signer2,signer3});
// Step 7: Envelope
envelope = Map();
envelope.put("documents",{doc});
envelope.put("emailSubject","Please Sign the Sale Purchase Agreement");
envelope.put("status","sent");
envelope.put("recipients",recipients);
// Step 8: Get DocuSign Access Token from CRM Variable
access_token_response = invokeurl
[
url :"https://www.zohoapis.com/crm/v6/settings/variables/5971686000102746225"
type :GET
connection:"newzohocrm"
];
access_token = access_token_response.get("variables").get(0).get("value");
// Step 9: Send envelope via DocuSign
headers = Map();
headers.put("Authorization","Bearer " + access_token);
headers.put("Content-Type","application/json");
response = invokeurl
[
url :"https://demo.docusign.net/restapi/v2.1/accounts/60bf62d5-5696-443e-8b93-74f5da67f9b7/envelopes"
type :POST
parameters:envelope.toString()
headers:headers
];
info response;
envelopeId = response.get("envelopeId");
update_map = Map();
update_map.put("Envelope_ID", envelopeId);
Update_Rec= zoho.crm.updateRecord("Reservation_", Ownership_Change_Request_id, update_map);
}
else
{
info "No attachments found on Ownership Change Request record.";
}
return "";
}