COMPANY / SYSTEM BACKGROUND
National Marketing Resources / Professional Marketing International
•
Business development, sales leads, web coaching
•
Current system, LINKS, is tied to Windows-only desktop clients
•
New system, Birdie, frees up the user to be on whatever platform they choose (Linux,
•
Mac, mobile browsers)
Implements sales leads tracking, sales company management, report generation
•
WHAT THE SYSTEM DOES
Processing representatives can add leads, lead sources, promotions, company
•
information
Processing reps pass leads on to individual sales companies
•
Company managers divvy out leads down to divisions, which divvy leads to teams
•
Teamleaders distribute leads to marketers, who follow up on sales calls with information
•
about the customer, possibly upgraded lead status
Reports can be generated on lead detail, company detail, unit performance, and more
•
REQUIREMENTS MODELS & MORE
Use case diagrams, domain class diagram, and color scheme
System
Define lead
source
Create new lead
Import external
leads
USE CASES
Define promotion
Define marketing
campaign
Processing Representative Processing Assign leads to
Rep lead path
Distribute leads to
sales company
Export lead list
Define customer
System
Distribute leads to
sales team
Distribute leads to
division
USE CASES Division
Generate lead
manager
report
Managers
Generate
marketer report
Sales
manager
Generate overall
report
Sales
Assign leads to
teamleader
marketers
System
USE CASES Modify lead status
Marketers
Marketer
Domain Class Diagram Benjamin Kreeger
LeadSource
1 companyName Product
address productName
1 *
city productSource
*
state productPrice
Promotion zip productDescription
promotionName country productPicture
promotionSource phone
1..*
0..1 OrderDetails
0..1
orderID
productID
qty
* *
*
Lead
createDate Order
expireDate
SalesCompany orderDate
customerID
companyName
DOMAIN CLASS
orderCustomerID
sourceID
address orderTotal
promotionID
city orderPaymentMethod
1 *
0..1 pipeline
state orderDueDate
salesCompanyID
zip orderPayDate
divisionID
country
1
*
teamID
phone *
marketerID
isInternal
DIAGRAM
status
managerID
change_date
1
1 detail 0..1
*
*
* *
Division Person
Team
divisionName firstName
divisionID
companyID lastName
0..1 teamLeaderID
managerID address
* city
1 1 1
1 1
New components and changes are in
1 state
zip
country
phone
green 1
0..1
ExtendUser
Customer
userID
age
maritalStatus
0..1 0..1
numChildren
assets
1 *
0..1 liabilities
Manager Team Leader Marketer ProcessingRep
managerType commissionRate commissionRate managerID
teamID salesCompanyID
1
* *
1
Report
name
description
createdAt
createdBy
startDate
endDate
0..*
0..*
0..*
0..*
CompanyReport DivisionReport TeamReport MarketerReport
salesCompanyID divisionID teamID marketerID
COLOR SCHEME
Bronze, brown earth tones with teal
selection (and shades of gray)
Entity Relationship Diagram Benjamin Kreeger
leads_leadsource
id INT(11) leads_product auth_user_user_permissions auth_permission auth_group_permissions
company_name VARCHAR(100) id INT(11) id INT(11) id INT(11) id INT(11)
address VARCHAR(100) name VARCHAR(100) user_id INT(11) name VARCHAR(50) group_id INT(11)
city VARCHAR(60) source_id INT(11) permission_id INT(11) content_type_id INT(11) permission_id INT(11)
leads_promotion state VARCHAR(2) price DECIMAL(12,2) codename VARCHAR(100)
id INT(11) zip_code VARCHAR(10) description LONGTEXT
name VARCHAR(100) country VARCHAR(50) picture VARCHAR(100)
source_id INT(11) phone VARCHAR(20)
leads_orderdetails
id INT(11)
order_id INT(11) auth_user auth_user_groups auth_group
product_id INT(11) id INT(11) id INT(11) id INT(11)
quantity DECIMAL(12,2) username VARCHAR(30) user_id INT(11) name VARCHAR(80)
first_name VARCHAR(30) group_id INT(11)
last_name VARCHAR(30)
email VARCHAR(75)
password VARCHAR(128)
leads_lead is_staff TINYINT(1)
id INT(11) leads_order is_active TINYINT(1)
create_date DATETIME auth_message
leads_salescompany id INT(11) is_superuser TINYINT(1)
expire_date DATETIME id INT(11)
id INT(11) date DATETIME last_login DATETIME
customer_id INT(11) user_id INT(11)
company_name VARCHAR(100) customer_id INT(11) date_joined DATETIME
source_id INT(11) message LONGTEXT
address VARCHAR(100) total DECIMAL(12,2)
promotion_id INT(11)
city VARCHAR(60) payment_method VARCHAR(10)
pipeline VARCHAR(2)
state VARCHAR(2) due_date DATETIME
django.auth
sales_company_id INT(11)
zip_code VARCHAR(10) pay_date DATETIME
division_id INT(11)
country VARCHAR(50)
team_id INT(11)
phone VARCHAR(20)
marketer_id INT(11)
is_internal TINYINT(1)
status VARCHAR(8)
manager_id INT(11)
change_date DATETIME
detail LONGTEXT
django_content_type django_admin_log
other django
leads_person id INT(11) id INT(11)
framework
id INT(11) name VARCHAR(100) action_time DATETIME
leads_division
tables
first_name VARCHAR(50) app_label VARCHAR(100) user_id INT(11)
id INT(11)
leads_team last_name VARCHAR(50) model VARCHAR(100) content_type_id INT(11)
name VARCHAR(50)
id INT(11) address VARCHAR(100) object_id LONGTEXT
company_id INT(11)
division_id INT(11) city VARCHAR(60) object_repr VARCHAR(200)
manager_id INT(11)
teamleader_id INT(11) state VARCHAR(2) action_flag SMALLINT(5)
django_site django_session
zip_code VARCHAR(10) change_message LONGTEXT
id INT(11) session_key VARCHAR(40)
country VARCHAR(50)
domain VARCHAR(100) session_data LONGTEXT
phone VARCHAR(20)
name VARCHAR(50) expire_date DATETIME
leads_extenduser
DETAIL DESIGN DOCUMENTATION
leads_customer
person_ptr_id INT(11)
person_ptr_id INT(11)
user_id INT(11)
age INT(11)
marital_status VARCHAR(20)
num_children INT(11)
assets DECIMAL(12,2)
liabilities DECIMAL(12,2)
Technology used, storyboards, database design, input/output design, etc.
leads_manager leads_teamleader leads_marketer leads_processingrep
extenduser_ptr_id INT(11) extenduser_ptr_id INT(11) extenduser_ptr_id INT(11) extenduser_ptr_id INT(11)
manager_type VARCHAR(50) commission_rate DECIMAL(5,2) commission_rate DECIMAL(5,2) manager_id INT(11)
team_id INT(11) sales_company_id INT(11)
birdie.reports
reports_report
id INT(11)
PYTHON VERSION 2.5
Object-oriented core language
DJANGO VERSION 1.1
Model-template-view web application
framework
MYSQL VERSION 5
Production relational database
management system
CREATE NEW LEAD STORYBOARD STEP 1
CREATE NEW LEAD STORYBOARD STEP 2
CREATE NEW LEAD STORYBOARD STEP 3
CREATE NEW LEAD STORYBOARD STEP 4
CREATE NEW LEAD STORYBOARD STEP 5
CREATE NEW LEAD STORYBOARD STEP 6
CHANGE LEAD STATUS STORYBOARD STEP 1
CHANGE LEAD STATUS STORYBOARD STEP 2
CHANGE LEAD STATUS STORYBOARD STEP 3
CHANGE LEAD STATUS STORYBOARD STEP 4
CHANGE LEAD STATUS STORYBOARD STEP 5
GENERATE MARKETER REPORT STORYBOARD STEP 1
GENERATE MARKETER REPORT STORYBOARD STEP 2
GENERATE MARKETER REPORT STORYBOARD STEP 3
GENERATE MARKETER REPORT STORYBOARD STEP 4
GENERATE MARKETER REPORT STORYBOARD STEP 5
Entity Relationship Diagram Benjamin Kreeger
leads_leadsource
id INT(11) leads_product auth_user_user_permissions auth_permission auth_group_permissions
company_name VARCHAR(100) id INT(11) id INT(11) id INT(11) id INT(11)
address VARCHAR(100) name VARCHAR(100) user_id INT(11) name VARCHAR(50) group_id INT(11)
city VARCHAR(60) source_id INT(11) permission_id INT(11) content_type_id INT(11) permission_id INT(11)
leads_promotion state VARCHAR(2) price DECIMAL(12,2) codename VARCHAR(100)
id INT(11) zip_code VARCHAR(10) description LONGTEXT
name VARCHAR(100) country VARCHAR(50) picture VARCHAR(100)
source_id INT(11) phone VARCHAR(20)
leads_orderdetails
id INT(11)
order_id INT(11) auth_user auth_user_groups auth_group
product_id INT(11) id INT(11) id INT(11) id INT(11)
quantity DECIMAL(12,2) username VARCHAR(30) user_id INT(11) name VARCHAR(80)
first_name VARCHAR(30) group_id INT(11)
last_name VARCHAR(30)
email VARCHAR(75)
password VARCHAR(128)
leads_lead is_staff TINYINT(1)
id INT(11) leads_order is_active TINYINT(1)
create_date DATETIME auth_message
leads_salescompany id INT(11) is_superuser TINYINT(1)
expire_date DATETIME id INT(11)
id INT(11) date DATETIME last_login DATETIME
customer_id INT(11) user_id INT(11)
company_name VARCHAR(100) customer_id INT(11) date_joined DATETIME
source_id INT(11) message LONGTEXT
address VARCHAR(100) total DECIMAL(12,2)
promotion_id INT(11)
city VARCHAR(60) payment_method VARCHAR(10)
pipeline VARCHAR(2)
state VARCHAR(2) due_date DATETIME
django.auth
sales_company_id INT(11)
zip_code VARCHAR(10) pay_date DATETIME
division_id INT(11)
country VARCHAR(50)
team_id INT(11)
phone VARCHAR(20)
marketer_id INT(11)
is_internal TINYINT(1)
status VARCHAR(8)
manager_id INT(11)
DATABASE DESIGN
change_date DATETIME
detail LONGTEXT
django_content_type django_admin_log
other django
leads_person id INT(11) id INT(11)
framework
id INT(11) name VARCHAR(100) action_time DATETIME
leads_division
tables
first_name VARCHAR(50) app_label VARCHAR(100) user_id INT(11)
id INT(11)
leads_team last_name VARCHAR(50) model VARCHAR(100) content_type_id INT(11)
name VARCHAR(50)
id INT(11) address VARCHAR(100) object_id LONGTEXT
company_id INT(11)
division_id INT(11) city VARCHAR(60) object_repr VARCHAR(200)
manager_id INT(11)
teamleader_id INT(11) state VARCHAR(2) action_flag SMALLINT(5)
django_site django_session
zip_code VARCHAR(10) change_message LONGTEXT
id INT(11) session_key VARCHAR(40)
country VARCHAR(50)
domain VARCHAR(100) session_data LONGTEXT
phone VARCHAR(20)
name VARCHAR(50) expire_date DATETIME
Entity relationship diagram leads_extenduser
leads_customer
person_ptr_id INT(11)
person_ptr_id INT(11)
user_id INT(11)
age INT(11)
marital_status VARCHAR(20)
num_children INT(11)
assets DECIMAL(12,2)
liabilities DECIMAL(12,2)
leads_manager leads_teamleader leads_marketer leads_processingrep
extenduser_ptr_id INT(11) extenduser_ptr_id INT(11) extenduser_ptr_id INT(11) extenduser_ptr_id INT(11)
manager_type VARCHAR(50) commission_rate DECIMAL(5,2) commission_rate DECIMAL(5,2) manager_id INT(11)
team_id INT(11) sales_company_id INT(11)
birdie.reports
reports_report
id INT(11)
name VARCHAR(255)
description LONGTEXT
created_at DATETIME
created_by_id INT(11)
start_date DATE
end_date DATE
reports_companyreport reports_divisionreport reports_teamreport reports_marketerreport
report_ptr_id INT(11) report_ptr_id INT(11) report_ptr_id INT(11) report_ptr_id INT(11)
sales_company_id INT(11) division_id INT(11) team_id INT(11) marketer_id INT(11)
SYSTEM CONTROLS
Error trapping, validation, and referential integrity
ERROR TRAPPING MEASURES
Django’s model-layer API handles much of database-access legwork
•
Most method calls to view layer raise HTTP404 if row(s) not found in database
•
get_object_or_404(Model, criteria)
•
get_list_or_404(Model, criteria)
•
Other measures: Python try/except blocks, explicit raise Http404 calls
•
DATA VALIDATION THROUGH DJANGO FORMS API
Forms either abstract fields from
•
database or be standalone fields with
like-model-field names
Forms can ‘clean’ POST data, intelligently
•
turning text into Python objects
(unicode strings, integers, decimals)
Validation rules are set in form classes;
•
cleaning form data validates it (any
errors are shown to user in form)
DATABASE INTEGRITY
Database tables by field designed via Django models layer
•
Includes specifying all foreign keys (one-to-one, one-to-many, many-to-many
•
relationships)
manage.py syncdb establishes database tables from model classes
•
Integrity rules carried over into MySQL, SQLite, PostgreSQL, etc.
•
Any rows with foreign keys referencing deleted rows are also deleted
•
HELP SYSTEM
On-page assistance included on all forms
Elaborates on form validation rules
0 comments
Post a comment