Sage CRM Developers Course Programming for the Advanced Manager
Looking ahead to the classes DP01: Introduction to the Development Partner Program DP02: Entities and the Data Model (Part 1 of 2) DP03: Entities and the Data Model (Part 2 of 2) DP04: Implementing Screen Based Rules (Part 1 of 2) DP05: Implementing Screen Based Rules (Part 2 of 2) DP06: Screen and User Independent Business Rules DP07: Workflow (Part 1 of 2) DP08: Workflow (Part 2 of 2) DP09: Using the API Objects in ASP Pages (Part 1 of 2) DP10 : Using the API Objects in ASP Pages (Part 2 of 2) DP11: Using the Component Manager DP12: Programming for the Advanced Manager DP13: Using the Web Services API DP14: Using the Web Services API (Part 2 of 2) DP15: Coding the Web Self Service COM API (Part 1 of 2) DP16: Coding the Web Self Service COM API (Part 2 of 2) DP17: Using the.NET API (Part 1 of 2) DP18: Using the.NET API (Part 2 of 2)
Agenda How the Manager works and processes s. Creating a template Calling new functions Processing data Opportunities Leads Communications
Getting Started Do you have an server to test with? VPOP –Paul Smith Computing Services – CMAIL –
Documentation and Resources System Administration Guide Management Configuration and Status Textpad Snippets –dpp.sagecrm.com
Services C:\program files\sage\CRM\services\eWare Manager.exe Hkey_Local_Machine, System,Current Control Set, Services CRMEscalationService Manager
Clean out Old Install Configurations Open registry HKEY_LOCAL_MACHINE\SOFTWARE\eWare\Config Go through each install and blank –EMlogonid –EMPassword Except for install to be used
Advanced Manager Support for MAPI and POP Allows separate inbound/outbound mail servers Secure SMTP supported External databases may be read and written to via the custom scripting aspect. Each mailbox is accessed and controlled by its own thread within the application.
Creating a New Script File To create a new "Sales" manager template. Save the template into the same folder as the other template files. C:\Program Files\Sage\CRM\Services\CustomPages\Scripts\sales.js The template will automatically be seen and made available to CRM for use in the Administration -> and Documents -> Management Server Options when creating a new address option.
Create a New Function To allow a new function to be called from within template then you will need to add the following Translation Caption Family:jsfunctions Caption Code:SalesEnquiry(); US Translation:Sales Enquiry Add other translations as required.
Basic Structure of Template Files See System Administration Guide Mytemplate.js Comments Initialise Variables General Event Functions –BeforeMainAction –AfterMainAction Main Functions (referenced in Config screen) –N.B. MainAction is a reserved word. Do not call any function ‘MainAction’ as this is internally replaced with function called from configuration screen. Utility Functions
Debugging Turn on Debugging in System In Template will use: MsgHandler.Debug = true;
Objects Available in Template UserQuery eWareQuery object using –SELECT * FROM vUsers WHERE –user_ address = FromAddress –OR –user_mobile = FromAddress PersonQuery eWareQuery object using –SELECT * FROM v , vPerson WHERE _personid –= pers_personid AND emai_ address = FromAddress CompanyQuery eWareQuery object using –SELECT * FROM v , vCompany WHERE –emai_companyid = comp_companyid AND –emai_ address = FromAddress eWare eWare object...logged on with admin user (as specified in configuration) MsgHandler Debugging control interface to the
Monitoring of Account Log information C:\Program Files\Sage\CRM\Services\Logs\ CRM MailManager.log **********RulesScript is...******** if (bCond) { AssignedUser = 4; AssignedChannel = 1; SalesEnquiry(); } **********End of RulesScript.**** Where additional rule sets are used the information passed to the script is changed **********RulesScript is...******** if ((!CompanyQuery.EOF) && (CompanyQuery("comp_type")=="Customer") ) { AssignedUser = 4; AssignedChannel = 1; CreateRepeatSale(); bCond=false; } if (bCond) { AssignedUser = 4; AssignedChannel = 1; SalesEnquiry(); } **********End of RulesScript.****
Errors in Log Error detection is based on the status of the script after it runs. The Management application runs the script and captures the result of the script running. Log file will contain the script and the error information. The section where the script failed is highlighted. s that cause the system to fail internally are saved in a rogue folder, which is located in...\Program Files\Sage\CRM\Services\CustomPages\Scripts
Object Properties Body - String (read/write) IsHTML - Boolean (read/write) Subject - String; (read/write) Priority - Integer (read/write) Recipients - AddressList Object SenderName - String (read/write) SenderAddress - String DeliveryTime - Date Attachments - AttachmentList Object BCC - AddressList Object CC - AddressList Object Methods Send() AddFile('physical path') Clear() Header("named header")
Other Objects AddressList Properties –Items(index) –Count - Integer(readonly) Methods –AddAddress(Address, Name) MailAddress Properties –Name - String (read/write) –Address - String (read/write) AttachmentList Properties –Items(index) –Count - Integer(readonly) –LibraryPath - String Attachment Properties –Name - String (read/write) –Extension - String (read only) Methods –Save(Name, Path) –SaveAs(Name, Path)
Adding Debugging Messages function BeforeMainAction() { MsgHandler.Log("BeforeMainAction function called"); } function AfterMainAction() { MsgHandler.Log("AfterMainAction function called"); }
Example Main Function function SalesEnquiry() { //add debug message to indicate that function called //if sender is known contact then log new opportunity //create communication //automatically acknowledge If sender is unknown then //create lead //create communication //automatically acknowledge } function SalesEnquiry() { MsgHandler.Log("SalesEnquiry function called"); //check if person exists if (!PersonQuery.EOF) { createOppo(); createComm("Opportunity"); // send (); } else { createLead(); createComm("Lead"); // send (); }
Example Create Opportunity function createOppo() { var myRecord = CRM.CreateRecord("opportunity"); myRecord.Oppo_PrimaryCompanyId= PersonQuery("pers_companyid"); myRecord.Oppo_PrimaryPersonId= PersonQuery("pers_personid"); myRecord.Oppo_AssignedUserId= AssignedUser; myRecord.Oppo_ChannelId= AssignedChannel; myRecord.Oppo_Description= .Subject.substring(0, 39); myRecord.Oppo_Source= " "; myRecord.Oppo_Note= "Please see the attached "; myRecord.Oppo_Status= "In Progress"; myRecord.Oppo_Stage= "Lead"; myRecord.Oppo_Opened = mydate.getVarDate(); myRecord.SetWorkflowInfo("Opportunity Workflow", "Lead") myRecord.SaveChanges(); intOppoRecordID = myRecord.oppo_opportunityid; }
Example Create Lead function createLead() { var myRecord = CRM.CreateRecord("lead"); myRecord.lead_AssignedUserId= AssignedUser; myRecord.lead_ChannelId= AssignedChannel; myRecord.lead_Description= .Subject.substring(0, 39); myRecord.lead_Source= " "; myRecord.lead_Details= "Please see the attached "; myRecord.lead_Status= "In Progress"; myRecord.lead_Stage= "NewLead"; myRecord.lead_Opened = mydate.getVarDate(); myRecord.SetWorkflowInfo("Lead Workflow", "Assigned") myRecord.SaveChanges(); intLeadRecordID = myRecord.lead_leadid; }
Example Send function send (strsubject) { .IsHTML = true; SenderName = .SenderName; SenderAddress = .SenderAddress; MailSubject = .Subject; MailBody = .Body; .Clear(); .Recipients.AddAddress(SenderAddress, SenderName); .SenderName = MsgHandler. Address; .SenderAddress = MsgHandler. Address; if (strsubject == "") { .Subject = CRM.GetTrans("GenCaptions", "AutoReply") + ": " + MailSubject } else { .Subject = strsubject; } .Body = CRM.GetTrans("GenCaptions", "Your mail has been logged") + " " + CRM.GetTrans("GenCaptions", "Thank you") + " " + CRM.GetTrans("GenCaptions", "Panoply Support") + " " + MailBody; .Send(); }
Q&A
Looking ahead to the classes DP01: Introduction to the Development Partner Program DP02: Entities and the Data Model (Part 1 of 2) DP03: Entities and the Data Model (Part 2 of 2) DP04: Implementing Screen Based Rules (Part 1 of 2) DP05: Implementing Screen Based Rules (Part 2 of 2) DP06: Screen and User Independent Business Rules DP07: Workflow (Part 1 of 2) DP08: Workflow (Part 2 of 2) DP09: Using the API Objects in ASP Pages (Part 1 of 2) DP10 : Using the API Objects in ASP Pages (Part 2 of 2) DP11: Using the Component Manager DP12: Programming for the Advanced Manager DP13: Using the Web Services API DP14: Using the Web Services API (Part 2 of 2) DP15: Coding the Web Self Service COM API (Part 1 of 2) DP16: Coding the Web Self Service COM API (Part 2 of 2) DP17: Using the.NET API (Part 1 of 2) DP18: Using the.NET API (Part 2 of 2)