Login / Register  search  syndication  about

          Kris Halsrud's Blog

Kris Halsrud on development and Integration with CRM and Development

Returning the sum of fields using IRepository in SalesLogix

One of the other things that you can do with the IRepositroy collection in SalesLogix is to perform a summation of a entity field after filtering for a group of records.  Lets look at how to do this:

    Sage.Platform.RepositoryHelper<Sage.Entity.Interfaces.IOpportunity> repository =
    Sage.Platform.EntityFactory.GetRepositoryHelper<Sage.Entity.Interfaces.IOpportunity>();
    Sage.Platform.Repository.ICriteria criteria = repository.CreateCriteria();
    criteria.Add(repository.EF.Eq("Type", “Some Type”));
    criteria.Add(repository.EF.Eq("Status", “Open”));
    criteria.SetProjection(repository.PF.Sum("SalesPotential"));
    System.Collections.IList potential= criteria.List();
    Double? pot = (Double?)null;
    var x = criteria.UniqueResult();
    if (x!=null) pot = Convert.ToDouble(x);
   
    //pot now contains a nullable Double sum of sales potential

So in this example I have created a criteria condition looking for all Opportunities with a type=”Some Type” and a Status = “Open”  from this I can then use the SetProjection method to sum the SalesPotential property.  With that I return an IList.  The IList is an arrayed list so my value will be the only returned value.  On the final line I just check to ensure the list is not null and then return the first position array which is the sum of the potential for all of the opportunities meeting my conditions.

What's This?
  
Bookmark and Share

About Kris Halsrud

   Kris Halsrud is a Senior Analyst / Developer for Customer FX Corporation.


Related Content
   Limiting the Height of the Infor CRM (Saleslogix) ComboBox Popup
In my last post, I discussed how the Infor CRM (Saleslogix) ComboBox is a Dijit Select form widget. This
Posted on Jan 29, 2015 by Ryan Farley to Ryan Farley's Blog
 
   How to Disable the ComboBox Control in the Infor CRM (Saleslogix) Web Client
There's a problem with the ComboBox control in the Infor CRM (Saleslogix) Web Client. It won't di
Posted on Jan 22, 2015 by Ryan Farley to Ryan Farley's Blog
 
   Infor CRM (formerly Saleslogix) Web Client - How Time Zones Work
The Infor CRM web client utilizes  a couple of methods to determine and then present what timezones
Posted on Jan 09, 2015 by Kris Halsrud to Kris Halsrud's Blog
 
   Index of Posts for Starting with Infor CRM (Saleslogix) Development
The blogs on customerfx.com go all the way back to 2003. There's years and years worth of information
Posted on Dec 30, 2014 by Ryan Farley to Ryan Farley's Blog
 
   Bug with Binding a Picklist Control in the Infor CRM (formerly Saleslogix) Web Client v8.1 Core Update 3b
I just recently discovered a bug when using a picklist control with the  StorageMode set to "ID
Posted on Dec 29, 2014 by Kris Halsrud to Kris Halsrud's Blog
 
Comments

 

RJ Samp said:

Could you give us an example of a Child Entity sum.....say you are on an Opportunity and need the sum of the Opportunity Product Records where the Product Family = 'ABC'. (or simply the sum of Opportunity Product records as a first example).

Or is this best done using an SQL OLE DB command reader (or even better an ExecuteScalar) object or a stored proc?

July 5, 2011 9:48 AM
 

Kris Halsrud said:

Something like this should get you the sum of the Opportunity Products on an opportunity where the Family=ABC.  note I am attempting a Query of the Product.Family field which I don't think will work due to the lazy loading of the entity model.  If it does not work you would need to do something different like this post:

customerfx.com/.../unwrapping-a-lazy-loaded-entity-object-in-the-saleslogix-web-entity-model.aspx

Sage.Platform.RepositoryHelper<Sage.Entity.Interfaces.IOpportunityProduct> repository =

Sage.Platform.EntityFactory.GetRepositoryHelper<Sage.Entity.Interfaces.IOpportunityProduct>();

Sage.Platform.Repository.ICriteria criteria = repository.CreateCriteria();

criteria.Add(repository.EF.Eq("Product.Family", “ABC”));

criteria.Add(repository.EF.Eq("Opportunity.Id", “SOMEOPPORTUNITYID”));

criteria.SetProjection(repository.PF.Sum("ExtendedPrice"));

System.Collections.IList potential= criteria.List();

if (potential!= null) used = Convert.ToDouble(potential[0]);  

As to the best way of handling this, certainly a data reader or back-end SP would work, it is really up to you as to which way you want to implement it.

July 5, 2011 10:14 AM

Leave a Comment

(required)  
(optional)
(required)  
Add
All contents Copyright © 2015 Customer FX Corporation
Customer FX Corporation
2324 University Avenue West, Suite 115
Saint Paul, Minnesota 55114
Tel: 800.728.5783

  Follow @CustomerFX on twitter
Follow the best news, tips, and articles
  Subscribe to Customer FX on youtube
Watch SalesLogix tutorial videos from Customer FX
Login / Register