• Blog Post: The Client Side API

    This is a simplified and specialised set of code libraries that will allow easy screen customizations. The API is based on the JQuery syntax although I must stress that knowledge of JQuery is not needed in order to use the API. The API is included as part of the full product development cycle and...
  • Blog Post: Defining Namespace References

    In a previous article " Script Libraries: Reusing Client Side Code Between Screens " I discussed how Sage CRM will automatically add any JavaScript file that you add to the custom folder into the header of every page produced by the system. It is a good idea when adding script libraries...
  • Blog Post: Binding Client Side Script to the onLoad event using crm.ready()

    Sage CRM has a Client Side method crm.ready() which is used to execute scripts once the page is loaded. We do not have to worry whether the browser is Chrome or Internet Explorer. The crm.ready() method will take the browser version into account and add the function we pass to it in the correct way...
  • Blog Post: Script Libraries: Reusing Client Side Code Between Screens

    It has always been possible in Sage CRM to share client side code between screens. In Sage CRM we could do this by using a shared external script library. For example if we wanted a set of business rules to be available in both the PersonBoxLong screen and the PersonBoxDedupe screen then we could...
  • Blog Post: Working with Default Company Addresses

    If you need to list company default/main addresses you can link from the Company to the Address table. You don't need to link to the address_link table. The address link table is used to keep details about the alternative addresses that might be stored against a company, e.g. billing and delivery...
  • Blog Post: Controlling the RecentList using Client Side Code

    The GoRecent function is held in Sage CRM in an external file which is included in every page. Sage CRM Code Example <script> function doCode() { SageCRM.webMenu.GoRecent('C'); } </script>
  • Blog Post: Using the Clientside API to control Tabs

    Consider the following business rule. "A customer has a requirement that the Case Tab in the company screen should only display when the Company has an agreed service level agreement and the user accessing the screen is in the 'Customer Service' team." This is a business rule...
  • Blog Post: Understanding the Dedupe screens created by the Advanced Customization Wizard

    A customer had a requirement to understand the way in which the Dedupe screens for a Custom Entity worked. The customer had created a new entity that was the child of Companies and Persons and they had added the look up fields into the Dedupe screen for the custom entity as you can see in the screen...
  • Blog Post: Detecting Screen Mode in the Client Side API

    Sage CRM Screens can exist in different ‘Modes’. The basic two modes that we have to worry about in Client Side code are View and Edit. We can use the fact that in Sage CRM <INPUT> HTML tags are named and have an ID with same name as the physical field in the database. e.g. <input...
  • Blog Post: Control of Grids, Lists and Columns Using the Client Side API

    The Client Side API contains methods that make it much easier to select rows, columns and individual cells for manipulation. Properties can be set, new data displayed in tool tips and the style of each cell can be changed. The documentation contains a good discussion of how to use the API. You can...
  • Blog Post: Creating Ajax calls using the Client Side API.

    Below is a screen shot of an Opportunity Summary page. You can see that as the mouse hovered over the Company Name in the 'For' panel of the screen a tool-tip appeared that displayed the company's Status and Type. This is information that is not normally available within the browser when...
  • Blog Post: Controlling Tabs with the Client Side API

    One of the common requirements that I hear during my conversations with partners and customers who are implementing Sage CRM is that at different points within a workflow or business process the organisation may need to make a user concentrate on only certain options that are most relevant at the time...
  • Blog Post: Calling extensions (ASP pages and .NET assemblies) from buttons added using the client side API

    The new Client Side API adds a very easy way of adding new buttons. crm.addButton(imageURL,captionfamily,captioncode,[options]) The new Client Side API allows application extensions to be called. This would typically mean calling either an ASP page or a .NET assembly. In order to do this we need...
  • Blog Post: Controlling the properties of New Buttons adding using the Client Side API

    The previous article " Calling Extensions (ASP pages and .NET assemblies) from Buttons added using the Client Side API " discussed how new buttons can be added to system screens. This article will look at how we can add the button exactly where we need and how we can control the behaviour...
  • Blog Post: Adding a Print Screen button to a system page using the client side API

    In this article I would like to consider 3 examples of adding a custom print button to a system screen. The button to be added will open a new version of the current screen that has minimal formatting which will allow the relevant information on the screen to be printed. The screen that will be used...
  • Blog Post: Adding Protection to Your Code in Script Libraries

    A partner recently asked me "how can I discourage any fiddling with the code I have written for my customer". The person who asked me this was anxious about two things. They wanted to make sure that their code didn't break, and they didn't want unauthorized people to 'borrow'...
  • Blog Post: Controlling FusionChart Widgets with the Client Side API

    The image above shows that the value of the oppo_certainty field has been rendered as a graphic widget. The certainty is shown as a value on a linear gauge using the features of the FusionChart libraries that can be used within Sage CRM. I created the chart above using the following code that was...
  • Blog Post: Adding Additional Information to the TopContent of a System Screen using the Client Side API

    In the image below you can see that I have added some additional HTML to the TopContent of the Person Summary screen. The following code can be added to the custom content box of a system screen like the PersonBoxLong or CompanyBoxLong. [code language="javascript"] <script> crm...
  • Blog Post: Creating a Mashup with a FusionChart and Ajax Data using the Client Side API

    The screen shot above of a Company Summary screen shows a graph displaying the count of opportunities and cases belonging to the company in the TopContent area. This has been created using the following code added to the Custom Content box of the CompanyBoxLong screen. <script> var myResults...
  • Blog Post: Hiding Panels in System Screens in Sage CRM

    Screens like the Opportunity Summary, Case Summary and Company Summary page are divided into different panels. Much of the page layout in the current version is controlled by HTML Tables. CSS styles are used to format the display of the tables and their TD tags. In these summary pages the different...
  • Blog Post: Controlling Default Values in Search Screens

    A customer had an issue. Their sales team used the Lead and Opportunity features extensively. Each day many leads were created in the system but the sales team members were getting annoyed that as they searched for the new leads through the main search page they were being distracted by those leads that...
  • Blog Post: Sage CRM System Architecture

    In this article I would like to look at how Sage CRM is designed and how its architecture enables its features. Sage CRM is a product in transition; it is moving from one architecture to another. This is a evolution that started with Sage CRM 7.0 and has continued through to the current version and...
  • Blog Post: Adding a field to display an Image. e.g. Product Photo

    Below is a screen that shows the product configuration area in Sage CRM. To create this field I added a new field to the NewProducts table within the administration screens. I called my field 'prod_productImage' and used the Entry Type 'WWW URL'. The field has a length of 200...
  • Blog Post: Creating a compound filter (filterWhere) using the Client Side API

    This article is about the client side API. Specifically this article is concerned with how to write a script to handle the information within a grid and then apply an action to the cells, row or columns of the grid where more than one criteria is needed. Examples of using the client side API with...
  • Blog Post: Using an External Script file to add event code to a field.

    A customer had the requirement to place some rules on the company name field to discourage users from entering characters that were not allowed in business names. Which special characters may be used in a business name will differ between countries. I am most familiar with the UK rules having set...