Send mail merge document from crm to docu sign
Tue Aug 12 2025 06:08:01 GMT+0000 (Coordinated Universal Time)
Saved by @usman13
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 ""; }
Comments