1. Introduction
GR8 CRM is a set of Grails Web Application Framework plugins that makes it easy to develop web applications with CRM functionality.
You can find more information about GR8 CRM on the main documentation site http://gr8crm.github.io.
1.1. Customer Relationship Management
Customer relationship management (CRM) is a system for managing a company’s interactions with current and future customers. It involves using technology to organize, automate and synchronize sales, marketing, customer service, and technical support. Wikipedia
The GR8 CRM "Ecosystem" currently contains over 40 Grails plugins. For a complete list of plugins see http://gr8crm.github.io.
Each GR8 CRM plugin defines a Bounded Context that focus on one specific domain, for example contact, project or document.
2. Sales/Lead Management Plugin
This plugin provide storage and services for managing sales leads in GR8 CRM applications.
Note that this plugin does not contain any user interface components. This plugin contains domain classes and services only. The plugin crm-sales-ui provides a Twitter Bootstrap based user interface for managing sales leads. crm-sales-ui depends on crm-sales so you only need to include crm-sales-ui in your BuildConfig.groovy if you want end-user lead management features.
3. Domain Model
4. CrmSalesProject
4.1. Properties
Property | Type | Description |
---|---|---|
number |
String |
Project ID |
name |
String |
Project name |
product |
String |
Name of product that’s included in the deal |
description |
String |
A longer description of the project (max 2000 characters) |
username |
String |
The sales representative responsible for this deal |
status |
CrmSalesProjectStatus |
Status of the project |
currency |
String |
Currency code |
value |
Double |
Total (potential) value of the deal |
probability |
Float |
Estimated probability (0=Lost deal, 0.6=High probability, 1.0=Closed deal) |
date1 |
Date |
Generic date (ex: date of initial contact) |
date2 |
Date |
Generic date (ex: order date) |
date3 |
Date |
Generic date (ex: revenue date) |
date4 |
Date |
Generic date (ex: delivery date) |
address |
CrmEmbeddedAddress |
Embedded address entity (ex: for real estate businesses) |
4.2. Methods
- Double getWeightedValue()
-
Weighted value of the project use the project’s
probability
value to calculate a weighted value. The weighted value is used in forecasts to get a more realistic value than the total value. Example: A deal with 50% probability is only valued half of it total (potential) value. - CrmContact getCustomer()
-
A convenience method to get the associated contact (organisation) with the role type
customer
. - CrmContact getContact()
-
A convenience method to get the associated contact (person) with the role type
contact
.
5. CrmSalesService
Like most other GR8 CRM plugins this plugin have a main service with methods for creating, searching and updating sales projects.
5.1. Methods
- CrmSalesProject createSalesProject(Map params, boolean save = false)
-
Create a new sales project.
def quoteStatus = crmSalesService.createSalesProjectStatus(name: 'Quote sent', true)
def acme = crmContactService.createCompany(name: 'ACME Inc.', email: 'info@acme.com',
address: [address1: '123 Demo Street', city: 'Groovytown', country: 'US'], true)
def deal = crmSalesService.createSalesProject(name: 'Pump station', customer: acme,
status: quoteStatus, value: 250000, currency: 'USD', probability: 0.6, true)
assert deal.customer.name == 'ACME Inc.'
assert deal.weightedValue == 150000
If currency is not specified in params the default currency is used, configurable with crm.currency.default .
If not configured at all then EUR will is used as default currency.
|
- def list(Map query, Map params)
-
List sales projects.
List myDeals = crmSalesService.list([username: 'myself'], [sort: 'date1', order: 'desc'])
6. Changes
- 2.4.0
-
First public release
7. License
This plugin is licensed with Apache License version 2.0
8. Source Code
The source code for this plugin is available at https://github.com/technipelago/grails-crm-sales
9. Contributing
Please report issues or suggestions.
Want to improve the plugin: Fork the repository and send a pull request.