Đồ án Triển khai CRM thực tế
MỤC LỤC
Page 1
MỤC LỤC
1.1. Kiến trúc SugarCRM .............................................................................................................. 9
1.2. Tùy biến trong SugarCRM............................................................................................... 14
2.1. Giới thiệu công ty RED.................................................................................................... 31
2.2. Mô tả bài toán .................................................................................................................. 31
2.3. Các yêu cầu cho hệ thống CRM của công ty Red............................................................ 32
2.4. Qui trình hoạt động .......................................................................................................... 34
2.5. Lƣợc đồ Usecase.............................................................................................................. 36
Usecase của Actor Nhân Viên.................................................................................. 37
Usecase của Actor Nhân Sự..................................................................................... 38
Usecase của Actor Kế Toán ..................................................................................... 39
Usecase của Actor Manager:.................................................................................... 40
2.6. Phân tích yêu cầu về cơ sở dữ liệu................................................................................... 41
Các thuộc tính của Account ..................................................................................... 42
Các thuộc tính của Revenues actual......................................................................... 43
Các thuộc tính của Revenues Estimation................................................................. 44
Các thuộc tính của Production Cost Esmation......................................................... 45
Các thuộc tính của Production Cost Actual ............................................................. 46
Các thuộc tính của Manpower Cost ......................................................................... 47
Các thuộc tính của User ........................................................................................... 47
Các thuộc tính của Timesheets................................................................................. 48
Các thuộc tính của Leaving...................................................................................... 50
2.6.10. Các thuộc tính của Salary......................................................................................... 51
2.6.11. Các thuộc tính của Project........................................................................................ 53
2.7. Các mẫu Report tham khảo.............................................................................................. 54
MỤC LỤC
Page 2
Mẫu Report Project Cost Actual (MA) .................................................................... 56
Mẫu Report Profit And Loss (CR).......................................................................... 57
Mẫu Report Profit And Loss (MA)......................................................................... 57
Mẫu Report Revenue............................................................................................... 57
Mẫu Report Timesheet (%)...................................................................................... 58
Mẫu Report Timesheet............................................................................................. 59
2.8. Khảo sát hệ thống server đang hoạt động của Red .......................................................... 60
3.1. Module Account............................................................................................................... 62
3.2. Module ManPower Cost .................................................................................................. 63
3.3. Module Production cost actual......................................................................................... 64
3.4. Module Production cost estimation.................................................................................. 64
3.5. Module Projects ............................................................................................................... 64
3.6. Module Revenues Estimation .......................................................................................... 65
3.7. Module Revenues Actual................................................................................................. 65
3.8. Module Salary.................................................................................................................. 66
3.9. Module Timesheets.......................................................................................................... 67
Module Leaving ........................................................................................................... 67
Module PublicDays...................................................................................................... 68
Module Report ............................................................................................................. 68
3.12.1. Report Estimate Cost................................................................................................ 69
3.12.2. Report Actual Cost (MA)......................................................................................... 69
3.12.3. Report Actual Cost (CR).......................................................................................... 70
3.12.4. Report Profit And Loss (CR) ................................................................................... 71
3.12.5. Report Profit And Loss (MA) .................................................................................. 71
3.12.6. Report Revenues Projection..................................................................................... 72
3.12.7. Report timesheet....................................................................................................... 72
3.12.8. Report Timesheets (%)............................................................................................. 74
MỤC LỤC
Page 3
4.3. Module timesheets ........................................................................................................... 81
4.4. Module Teams.................................................................................................................. 84
4.5. Module salary................................................................................................................... 86
4.6. Module report................................................................................................................... 89
Report estimate cost................................................................................................. 91
Report actual cost..................................................................................................... 95
4.7. Module Manpower Cost................................................................................................. 100
4.8. Đánh giá hệ thống .......................................................................................................... 101
KẾT LUẬN.......................................................................................... 104
MỤC LỤC HÌNH ẢNH
Page 4
MỤC LỤC HÌNH ẢNH
Hình 1: Các module trong SugarCRM......................................................................10
Hình 3: Các công cụ trong Developer Tools.............................................................14
Hình 4: Công cụ Repair trong System ......................................................................15
Hình 5: Tạo relationship trong công cụ studio..........................................................23
Hình 6: các quan hệ giữa các module với nhau ........................................................23
Hình 7: Cấu trúc code của file logic hook ................................................................25
Hình 9: Lƣợc đồ Uscae tổng thể ...............................................................................36
Hình 11: Lƣợc đồ Usecase của Actor Nhân Sự ........................................................38
Hình 12: Lƣợc đồ Uscase của Actor Kế Toán ..........................................................39
Hình 14: Mô hình ERD tổng thể...............................................................................41
Hình 15: Các thuộc tính của thực thể Account .........................................................42
Hình 16: Các thuộc tính của thực thể revenues actual..............................................43
Hình 21: Các thuộc tính của thực thể Users..............................................................48
Hình 22: Các thuộc tính của thực thể Timesheets.....................................................49
Hình 23: Các thuộc tính của thực thể Leaving..........................................................50
Hình 24: Các thuộc tính của thực thể Salary.............................................................52
Hình 25: Các thuộc tính của thực thể Project ...........................................................53
Hình 29: Giao diện tạo mới Manpower Cost............................................................63
Hình 30: Giao diện tạo mới Prduction cost actual ....................................................64
Hình 32: Giao diện mới mới Projects .......................................................................65
Hình 33: Giao diện tạo mới Revenues Estimation....................................................65
MỤC LỤC HÌNH ẢNH
Page 5
Hình 36: Giao diện khi nhập Timesheets..................................................................67
Hình 37: Giao diện khi nhập Leaving.......................................................................67
Hình 38: Giao diện khi tạo mới Publicdays..............................................................68
Hình 39: Giao diện các Report trong hệ thống .........................................................68
Hình 40: Giao diện Report Estiamte Cost.................................................................69
Hình 41: Giao diện Report Actual Cost (MA)..........................................................70
Hình 42: Giao diện Report Actual Cost (CR)...........................................................70
Hình 43: Giao diện Report Profit And Loss (CR) ....................................................71
Hình 44: Giao diện Report Profit And Loss (MA) ...................................................72
Hình 45: Giao diện Report Revenues Projection......................................................72
Hình 48: Giao diện Report Tímesheet (%) ...............................................................74
Hình 49: Màn hình đ ng nhập vào hệ thống.............................................................75
Hình 50: Màn hình edit account................................................................................76
Hình 51: Màn hình tạo mới Project...........................................................................79
Hình 53: Màn hình Timesheets.................................................................................84
Hình 55: Màn hình Salary.........................................................................................89
Hình 56: Màn hình danh sách các report .................................................................91
MỤC LỤC BẢNG
Page 6
MỤC LỤC BẢNG
Bảng 6: Mẫu Report Project Cost Estimation...........................................................54
Bảng 7: Mẫu Report Project Cost Actual (CR).........................................................55
Bảng 8: Mẫu Report Project Cost Actual (MA) .......................................................56
Bảng 9: Mẫu Report Profit And Loss (CR) ..............................................................57
Bảng 10: Mẫu Report Profit And Loss (MA) ...........................................................57
Bảng 11: Mẫu Report Revenues ...............................................................................57
MỞ ĐẦU
Page 7
MỞ ĐẦU
Cuộc cách mạng công nghệ thông tin ở thế kỷ 20 đã cho chúng ta thấy ảnh
hƣởng sâu sắc của công nghệ thông tin đến mọi lĩnh vực trong đời sống kinh tế, v n
hóa, xã hội; đƣa xã hội loài ngƣời chuyển mạnh từ xã hội công nghiệp sang xã hội
thông tin, từ kinh tế công nghiệp sang kinh tế trí thức. Nội dung cơ bản của cuộc
cách mạng này là ứng dụng công nghệ cao, hiện đại với công nghệ thông tin và
truyền thông (CNTT&TT) là phƣơng tiện có ý nghĩa quyết định, với trí tuệ và sáng
tạo là nguồn lực quốc gia quan trọng, phục vụ cho việc xây dựng và phát triển một
xã hội ngày càng tốt đẹp hơn. Từ những thập kỉ cuối thế kỷ 20 CNTT&TT đã có
những bƣớc phát triển vũ bão và đã đem lại những thay đổi lớn lao cho cuộc sống
nhân loại.
CNTT, nhất là mạng Internet làm cho khoảng cách trên thế giới ngày càng
trở nên nhỏ bé. Tri thức và thông tin không biên giới sẽ đƣa hoạt động kinh tế vƣợt
ra khỏi phạm vi quốc gia và trở thành hoạt động mang tính toàn cầu. Trong mọi
hoạt động kinh doanh, khách hàng luôn đóng vai trò trung tâm. Và câu hỏi đƣợc đặt
ra làm sao để quản lý khách hàng đƣợc tốt? Làm sao để khách hàng hợp tác với
công ty lâu dài hơn ? Làm sao để t ng lợi nhuận cho công ty ? Làm sao để t ng sự
cộng tác giữa các nhân viên trong một công ty, một phòng ban ? Làm sao để bảo
mật các thông tin nhạy cảm... Phần mềm quản lí quan hệ khách hàng (CRM) ra đời
nhằm để giải quyết các vấn đề trên.
Mục tiêu và phạm vi khóa luận
Mục tiêu của khóa luận tốt nghiệp này chính là triển khai phần mềm quản lý
quan hệ khách hàng cho một doanh nghiệp cụ thể dựa trên phần mềm mã nguồn mở
SugarCRM.
Cấu trúc khóa luận
Cấu trúc của khóa luận bao gồm các phần sau:
Phần mở đầu
Phần nội dung
MỞ ĐẦU
Page 8
Chƣơng 1 giới thiệu nền tảng sugarcrm: các kiến thức cấn biết về cấu trúc thƣ
mục của SugarCRM, các cách chỉnh sửa trong SugarCRM.
Chƣơng 2 thu thập và phân tích yêu cầu: giới thiệu về công ty red, các yêu cầu
về bài toán, lƣợc đồ usecase, mô hình ERD cho phần mềm, các thuộc tính các lƣu
trữ dành riêng cho từng module
Chƣơng 3 thiết kế hệ thống: Workflow cho hệ thống, thiết kế giao diện của từng
module
Chƣơng 4 xây dựng hệ thống thực tế cho Red: dựa vào những thiết kế ban đầu
tiến hành xây dựng hệ thống thực tế.
Phần kết luận: kết quả đạt đƣợc.
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 9
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGARCRM
1.1. Kiến trúc SugarCRM
SugarCRM là phần mềm mã nguồn mở sử dụng hệ điều hành LAMP
(Linux, Apache,MySQL và PHP). Kể từ phiên bản 1.0, đội ngũ phát triển
SugarCRM đã thêm nhiều hỗ trợ cho mỗi hệ thống hoạt động (bao gồm Windows,
Unix và Mac OSX) mà trên những hệ thống đó sử dụng ngôn ngữ lập trình PHP
chạy trên Microsoft IIS Web server, Microsoft SQL Server, và Oracle databases.
Từ khi phát triển SugarCRM Open Source vào n m 2004, những nhân viên
của SugarCRM đã thiết kế mã nguồn ứng dụng cho phép những nhà phát triển có
thể tự kiểm tra và chỉnh sửa đƣợc. Cơ sở ứng dụng Sugar có khuôn mẫu mở rộng rất
phức tạp đƣợc xây dựng trên ứng dụng cho phép những nhà phát triển có thể có
những thay đổi quan trọng trên ứng dụng theo cách thức tối ƣu và theo từng kiểu
riêng biệt. SugarCRM đƣợc thiết kế để hỗ trọ tối đa cho những ngƣời sử dụng dù
biết về code hay không biết về code php cũng có thể có những tùy biến trong hệ
thống của SugarCRM để đáp ứng nhu cầu của ngƣời sử dụng. Nếu ngƣời sử dụng
không biết về code php có thể sử dụng công cụ developer trong màn hình admin để
có những thiết lập cần thiết.
Các ứng dụng của SugarCRM đƣợc xây dựng dựa trên module framework,
khi ứng dụng bắt đầu chạy sẽ gọi các entry point lên (mặc định sẽ gọi index.php
hoặc soap.php).
Entry point chính của SugarCRM khi đƣợc gọi lên là index.php. Có 3 thông
số chính trong việc gọi các entry point đó là:
Module: sẽ gọi đến module đƣợc truy cập.
Action: gọi đến hành động đƣợc thực hiện khi gọi module.
Recort: là id dùng để truy cập.
Tất cả các module đƣợc tạo ra hoặc cài đặt thông qua module loader đều phải
tồn tại trong đƣờng dẫn <root><sugar/modules/tên module. Dƣới đây là cấu trúc các
thƣ mục trong SugarCRM.
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 10
H nh 1: Các module trong SugarCRM
Cache : Các thƣ mục cache khác nhau đƣợc viết cho thƣ mục hệ thống nhằm
hạn chế những sự tiếp cận cơ sở dữ liệu và t ng tốc độ hiển thị nội dung vì khi load
trang web lên nội dung sẽ đƣợc lấy trong bộ nhớ cache.
Custom: Thƣ mục này đảm nhận việc tập trung lại các chỉnh sửa của những
ngƣời phát triển, khi các nhà phát triển có những thay đổi trong Studio thì trong thƣ
mục custom sẽ tự động sinh ra những code tƣơng ứng với các thay đổi đó, nhà phát
triển hoàn toàn có thể có những chỉnh sửa cần thiết cho hệ thống của mình bằng
cách chỉnh sửa trong module custom này.
Data: những files hệ thống quan trọng đƣợc lƣu trữ tại đây, đáng chú ý nhất
là lớp cơ sở SugarBean nó kiểm soát trật tự ứng dụng mặc định cho mọi đối tƣợng
trong Sugar.
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 11
Include: Nhiều chức n ng có ích của Sugar đƣợc lƣu trữ ở đây cũng nhƣ
những hàm xử lý khác mà Sugar dùng nhƣ là một phần trong hoạt động của nó.
Đáng lƣu ý nhất trong hƣớng dẫn này là file utils.php file nó chứa hầu hết các chức
n ng có lợi rộng rãi nhất đƣợc sử dụng .
Metadata: Thƣ mục này chứa các mối quan hệ giữa các module với nhau.
Modules: Bao gồm tất cả các chức n ng trong hệ thống đƣợc hiển thị trên
web. Những chƣơng trình chức n ng Custom đƣợc lắp đặt thông qua Module
Loader cũng hiển thị ở đây, các thao tác của ngƣời phát triển đều có thể thực hiển ở
thƣ mục Modules những nhƣ thế sẽ ảnh hƣởng cho việc tập trung code và khó cho
việc chỉnh sửa sau này.
Đó là những module chính trong SugarCRM ngoài ra cũng còn có những
module khác nhƣ : service, soap, themes…
Thông thƣờng mỗi module đại diện cho một thực thể tƣơng ứng trong mục
đích kinh doanh, ví dụ nhƣ là module “contact” trong SugarCRM. Một module bao
gồm 3 phần chính đó là lƣợc đồ dữ liệu, giao diện ngƣời dùng và chức n ng ứng
dụng. Dƣới đây là cấu trúc thƣ mục của một module của SugarCRM :
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 12
H nh 2: Cấu trúc các thƣ mục con của một thƣ mục gốc
Dashlets: Sẽ là nơi chứa các mảng dùng để lƣu trữ thông tin của module có
thể hiện thị ở trang chủ, mặc định ở trang chủ trong SugarCRM sẽ hiển thị các
thông tin chính của từng module. Vì vậy nếu muốn hiển thị thông tin gì của module
ra ngoài màn hình trang chủ thì khai báo ở đây. Mặc định của Dashlets sẽ lấy màn
hình Listview làm màn làm dashlets.
Language: Là thƣ mục chƣa định nghĩa của các chuỗi hiển thị trong module.
Vì SugarCRM là một phần mềm đa ngôn ngữ, nên tất các các nhãn của module sẽ
đƣợc định nghĩa tại tại thƣ mục này để tiện lợi cho việc thay đổi ngôn ngữ mà
không ảnh hƣởng đến việc hiển thị các chuỗi hiển thị ra ngoài ứng dụng.
Metadata: Thƣ mục này có nhiêm vụ lƣu các file hiện thị của module bao
gồm việc hiển thị các subpanel, màn hình listview, detailview, editview.
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 13
Tpls: Thƣ mục này chƣa các các dòng HTML đảm nhiệm việc hiển thị dữ
liệu ra bên ngoài màn hình ứng dụng.
Views: Cách thức hiển thị dữ liệu của SugarCRM đƣợc sử dụng bằng nhiều
cách, và Views chính là thƣ mục để đảm nhiệm một trong các công việc đó, nơi nay
sẽ lƣu các file .php của màn hình editview,detailview hay là listview.
Khi giới thiệu về các thành phần của module thƣờng hay nhắc đến màn hình
editview, detailview hay listview, các màn hình này sẽ đảm nhiệm những công việc
cụ thể cho việc hiển thị nhƣ sau:
ListView : Là màn hình sẽ hiển thị các danh sách các dữ liệu có trong
module, màn hình sẽ hiển thị mặc định khi nhấp vào một module nào đó, trong màn
hình này còn có các chức n ng nhƣ search.
EditView: Là màn hình hiển thị ra các trƣờng để hiển thị các trƣờng dữ liệu
hiện có của module để ngƣời sử dụng nhập vào.
DetailView: Là màn hình hiển thị thông tin chi tiết dữ liệu đã đƣợc nhập và
đã đƣợc lƣu xuống cơ sở dữ liệu.
Bên cạnh các thƣ mục chính trên SugarCRM còn bao gồm những tâp tin bổ
sung nhƣ sau:
Form.php: Tập tin này có chức n ng làm cho Javascript xác nhận các hành
động chỉnh sửa khi ngƣời sử dụng có những thay đổi
Menu.php: Tập tin này làm nhiệm vụ hiển thị ra các phím tắt menu, đƣợc
hiển thị ở bên trái phía trên của màn hình sử dụng, mỗi menu này sẽ liên kết với
màn hình listview, hay editview tùy theo từng trƣờng hợp sử dụng
Vadefs.php: Tập tin này sẽ định nghĩa các trƣờng dữ liệu của module, các
trƣờng dữ liệu có thể đƣợc định nghĩa để lƣu xuống database hoặc không cho lƣu
xuống database. Ngoài ra các mối quan hệ giữa module và module cũng có thể đƣợc
định nghĩa ở đây. ( ở các module có thể có các mối quan hệ nhƣ là: 1-n, n-n,1-1).
SugarBean.php: Tập tin này nằm dƣới thƣ mục '<sugar root> / dữ liệu chứa
các lớp cơ sở SugarBean đều đƣợc sử dụng. Bất kỳ module đọc, viết hoặc hiển thị
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 14
các dữ liệu sẽ mở rộng lớp này. SugarBean thực hiện tất cả các nâng nặng cho dữ
liệu tƣơng tác, xử lý mối quan hệ, ...
1.2.
Tùy biến trong SugarCRM
SugarCRM đƣợc phát triển để giúp các ngƣời sử dụng dù không biết về code
PHP vẫn có thể có những chỉnh sửa về giao diện hoặc viết thêm các module đơn
giản để đáp ứng các yêu cầu của ngƣời sử dụng. Phần này sẽ giải thích các cách
khác nhau để tùy chỉnh SugarCRM.
Cấu trúc các thƣ mục trong SugarCRM đƣợc tạo ra để giúp thực hiện các tuỳ
biến các module hiện tại hoặc tạo ra các module hoàn toàn mới. Thông qua các
thành phần khác nhau các ngƣời sử dụng có thể mở rộng các chức n ng của
SugarCRM một cách hiệu quả. Với Module Builder và các công cụ Studio, có sẵn
từ trang chủ admin, cho phép ngƣời sử dụng có thể thực hiện các tùy chỉnh phổ
biến. Ngoài ra ngƣời sử dụng có thể tiếp tục mở rộng phát triển hệ thống bằng cách
thêm các đoạn code PHP tùy ý trong các file của thƣ mục Custom.
1.2.1. Tùy biến trong SugarCRM sử dụng công cụ developer
Các tùy chỉnh phổ biến đƣợc thực hiện với các bộ công cụ phát triển đƣợc
cung cấp trong màn hình quản trị của SugarCRM. Những công cụ này bao gồm:
H nh 3: Các công cụ trong Developer Tools
Studio - Chỉnh sửa Dropdowns, Fields, Layouts và Nhãn.
Module Builder - Xây dựng các module mới để mở rộng các chức n ng của
SugarCRM
Module Loader - Thêm hoặc loại bỏ các module SugarCRM, chủ đề, và các
gói ngôn ngữ.
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 15
Dropdown Editor - Thêm, xóa, hoặc thay đổi danh sách thả xuống trong ứng
dụng.
Rename Tabs - Thay đổi nhãn của các tab module
Display Tabs Module và Subpanels - Chọn tab module và bảng để hiển thị
trong ứng dụng.
Configure Grouped modules - Tạo, chỉnh sửa và gom nhóm các module
trong SugarCRM
Bởi vì SugarCRM là một ứng dụng mã nguồn mở, ngƣời sử dụng có thể truy
cập vào code. Nhƣng những tùy chỉnh code của ngƣời sử dụng thực hiện trong các
tập tin cốt lõi cần phải đƣợc repair lại cho đồng nhất với các thƣ mục khác để tránh
xảy ra xung đột.
H nh 4: Công cụ Repair trong System
Các bƣớc để tạo mới 1 module trong SugarCRM dựa trên các công cụ có sẵn
trong trang chủ của Admin. Trong SugarCRM mỗi bảng dữ liệu đều ứng với mỗi
module đƣợc đặt tên tƣơng ứng, ngoài ra SugarCRM còn hỗ trợ cho việc tạo các
mối quan hệ giữa các module với nhau thông qua công cụ studio. Dƣới đây là các
hình ảnh cũng nhƣ thao tác minh họa cho việc tạo mới các module và thiết lập các
mối quan hệ giữa các module với nhau.
Bƣớc 1: Tạo mới package (package là một gói có thể chƣa một hoặc nhiều
module)
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 16
1
Tạo mới package
B1: Vào
AdminModule
Builder
B2: Tạo mới 1
package,
Điền tên package,key
và save lại.
Màn mình module builder
Màn hình tạo mới package
Bảng 1: Tạo mới một package trong SugarCRM
Để có thể tạo mới đƣợc một module trong hệ thống thì trƣớc hết cần phải tạo
ra các package đứa chƣa các module cần tạo mới, module builder giúp tạo các gói
package và xuất ra file Zip để ngƣời sử dụng có thể dễ dàng cài đặt và di chuyển khi
có những thay đổi trong SugarCRM.
Bƣớc tiếp theo sau khi tạo mới package là ngƣời sử dụng tạo các module mới
cũng nhƣ thiết lập các fields, các mối quan hê, các nhãn…
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 17
Bƣớc 2: Tạo mới module
2
Tạo mới module
B1: Click new
module
B2: Điền thông tin
Module
- Module Name
- Label
- Chọn Type
Màn hình tạo mới module
Bảng 2: Tạo mới một module trong SugarCRM
N m trong số sáu mẫu đối tƣợng có chứa các chức n ng CRM đƣợc xây
dựng trƣớc đối với từng trƣờng hợp sử dụng CRM. Những đối tƣợng này là:
“basic”, “company”, “file”, “issue”, “person”, and “sale”. Mẫu “basic” cung cấp
các field nhƣ: tên, đƣợc chỉ định để, ngày tạo, và mô tả. Phần còn lại của các mẫu
này có chứa các lĩnh vực để mô tả các thực thể tƣơng tự lần lƣợt là “Accounts”,
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 18
“Documents, “Cases”, “Contacts”, và “Opportunities”. Vì vậy, để tạo ra một
Module để theo dõi các loại tài khoản, ngƣời sử dụng nên chọn mẫu
“Company”. Tƣơng tự nhƣ vậy, để theo dõi các tƣơng tác của con ngƣời, ngƣời sử
dụng nên chọn “People”. Ngƣời sử dụng dựa trên mục đích của mình để tạo chọn
các mẫu có sẵn trong module Builder. Nếu ngƣời sử dụng muốn tạo mới module
mới với các field cơ bản thì nên chọn mẫu “basic”.
Khi đã tạo mới module và chọn các mẫu mặc định, ngƣời sử dụng tiến hành
tạo mới các field và các nhãn cho các field đó.
Bƣớc 3: Dùng studio trong module builder để tiến hành các chỉnh sửa
3
Tùy chỉnh module
bằng công cụ Studio.
A. Fields
B1: Chọn test1Fields
Add Fields
B2: Điền thông tin
Fields
Save lại.
Màn hình edit Fields
B. EditView
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 19
B1: Chọn test1
LayoutsEditView
- EditView là
giao diện thêm
mới hoặc chỉnh
sửa một dòng dữ
liệu với Module
đó.
B2: Tại đây ngƣời
Màn hình Edit View
dùng có thể kéo thả
những Fields(đã add)
từ bên cửa sổ Toolbox
sang cửa sổ Layout và
ngƣợc lại.
- Sau khi thiết kế
giao diện Edit ta
chọn Save.
C. DetailView
B1: Chọn test1
LayoutsDetailView
- DetailView là
giao diện hiển
Màn hình Detail View
thị chi tiết của
một trƣờng dữ
liệu trong
Modulel đó.
B2: Tại đây ngƣời
dùng có thể kéo thả
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 20
những Fields(đã add) từ
bên cửa sổ Toolbox
sang cửa sổ Layout và
ngƣợc lại.
- Cửa sổ Layout
là nơi chứa
những fields của
màn hình
DetailView của
Module.
- Sau khi thiết kế
giao diện Detail
ta chọn Save.
D. ListView
B1: Chọn test1
LayoutsListView
- ListView là giao
diện Hiển thị
danh sách các
Records trong
Modulel đó.
B2: Tại đây ngƣời
dùng có thể kéo thả
những Fields(đã add)
từ bên cửa sổ Hidden
sang cửa sổ Available
và ngƣợc lại.
- Sau khi thiết kế
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 21
giao diện List ta
chọn Save.
E. Search
B1: Chọn test1
LayoutsSearchBas
ic Search
- Basic Search là
giao diện Hiển
thị các tiêu chí
search các
record của
module.
B2: Tại đây ngƣời
dùng có thể kéo thả
những Fields(đã add)
từ bên cửa sổ Hidden
sang cửa sổ Default và
ngƣợc lại.Nhằm thêm
bớt các tiêu chí search
cho module.
- Sau khi thiết kế
giao diện
Search ta chọn
Save.
Bảng 3: Tùy chỉnh module bằng công cụ Studio trong module builder
Với các thao tác trên ngƣời sử dụng có thể thiết lập các màn hình edit view,
detail view, list view, quick create trong phần layout.
Edit view: là màn hình tạo mới hoặc chỉnh sửa thông tin khi ngƣời dùng bấm
vào button edit hay create của module đó.
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 22
Detail view: là màn hình xem chi tiết các thông tin.
List view: là màn hình danh sách các thông tin của module, cũng là màn hình
mặc định khi chọn vào mỗi module
Quick create: là màn hình tạo mới các thông tin cần thiết của mỗi module.
Trong module builder còn hỗ trợ cho việc tạo giao diện cho các dashlet,
popup view, search và các subpanel.
Bƣớc 4: Deloy module
Sau khi đã tạo đƣợc các thông tin cần thiết cho module, ngƣời sử dụng sẽ
tiến hành Deloy hoặc là Publish để có thể đƣa module mới tạo vào trong hệ thống.
4
Deploy Module
Sau khi tùy chỉnh
Module bằng công cụ
Studio chúng ta có thể
sử dụng Module này
hoặc Publish ra ngoài để
cài đặt sau.
A. Deploy
- Để sử dụng
module này
chúng ta vào
Module Buider
Test
- Sau đó ta chọn
Deploy
- Sau khi Deploy
Module này đã
đƣợc cài đặt vào
Sugar.
- Chúng ta có thể
vào Menu để sử
dụng Module này.
Bảng 4: Deloy module để đƣa vào sử dụng trong hệ thống SugarCRM
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 23
Sau khi packages mới đƣợc published, ngƣời sử dụng có thể xác nhận
packages này vào hệ thống của Sugar thông qua module Loader ngƣời sử dụng sẽ
upload file Zip vừa đƣợc publish.
Đó là các bƣớc cơ bản để tạo mới một module đƣa vào hệ thống. Sau khi đƣa
module mới vào hệ thống nếu ngƣời sử dụng có những thay đổi, cũng nhƣ muốn
xây dựng các mối quan hệ giữa module mới tạo với các module cũ trong hệ thống,
có thể vào phần Studio trong trang của Admin để tiến hành các chỉnh sửa.
H nh 5: Tạo relationship trong công cụ studio
Trong phần Studio này ngƣời sử dụng có thể tạo các mối quan hệ, cũng nhƣ
thay đổi lại các nhãn cho các module, ngƣời sử dụng có thể tạo các quan hệ: 1-1, 1-
n, n-n trực tiếp thông qua công cụ này.
H nh 6: các quan hệ giữa các module với nhau
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 24
Đó chính các các bƣớc để ngƣời sử dụng có thể tạo mới một module đơn
giản, và tạo các quan hệ giữa các module trong hệ thống mà không cần hiểu biết
nhiều code PHP. Tuy nhiên nếu muốn mở rộng các ứng dụng của hệ thống cần có
những hiểu biết về cấu trúc của từng thƣ mục thì mới có chỉnh sửa sâu vào hệ
thống. Dƣới đây là phần giới thiệu về chức n ng của từng thƣ mục.
Thƣ mục Custom: Hệ thống của Sugar có chứa 1 thƣ mục gọi là “custom”.
Thƣ mục này chữa đựng các file Metadata và code để mở rộng các chức n ng của
Sugar. Một số file trong thƣ mục này đƣợc tự động tạo ra nhờ Module Builder,
Studio, và Workflow tools (Chỉ có ở Sugar Professional và Sugar enterprise) và các
file còn lại có thể đƣợc thêm vào hoặc chỉnh sửa trực tiếp tuy vào ngƣời sử dụng.
Các file trong thƣ mục Custom bao gồm:
Vardefs : file này đƣợc dùng để định nghĩa các trƣờng thuộc tính cho một
module nào đó. Các vardefs có sẵn có thể đƣợc chỉnh sửa và ta có thể tạo ra các
vardefs mới bằng cách thay đổi các file vardefs trong thƣ mục custom. Ngƣời sử
dụng nếu muốn chỉnh sữa hoặc thêm vào các file mới trong các thƣ mục này này:
/custom/Extension/modules/<MODULE_NAME>/Ext/Vardefs/
Tuy nhiên cũng lƣu ý đối với các file trong các thƣ mục
/custom/modules/<MODULE_NAME>/Ext/Vardefs/vardefs.ext.php đƣợc tự
động tạo ra bởi hệ thống và không nên chỉnh sửa. Các file Vardefs có thể thay thế
toàn bộ các định nghĩa của các field hoặc chỉ thêm vào. Nên repair lại để các field
đƣợc đồng nhất với nhau (Admin->Repair->Quick Repair and Rebuild).
Languages: Ngƣời sử dụng có thể ghi đè lên các chuỗi hiển thị bằng một
ngôn ngữ nào đó hoặc tạo ra các chuỗi hoàn toàn mới bằng các chỉnh sửa trong các
thƣ mục.
/custom/include/language/ (for $app_strings or $app_list_strings)
/custom/Extension/application/Ext/Include/
/custom/Extension/modules/<MODULE_NAME>/Ext/Language/ (for
$mod_strings only)
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 25
1.2.2. Tùy biến trong SugarCRM bằng code
Trong khi lợi ích chính của module builder là ngƣời quản trị có thể tạo một
module hoàn toàn mới mà không phải viết code, tuy nhiên vẫn còn một vài công
việc cần phải viết bằng code PHP, lấy ví dụ nhƣ là : chỉnh sửa các quan hệ hoặc các
dịch vụ liên quan đến Web Serivce. Có một trong hai phƣơng pháp có thể là đƣợc
điều này tạoLogic Hook và chỉnh sửa Bean Files.
1.2.2.1. Tùy biến logic hook
Logic hook là việc quản lý các sự kiện trong SugarCRM, các sự kiện có thể
gọi đƣợc các action trong hệ thống ví dụ:
H nh 7: Cấu trúc code của file logic hook
Logic Hook bằng cách viết code PHP chứa các quản lý các sự kiện hiện có ở
trong Sugar, để thực hiện điều này ngƣời phát triển phải custom code sau đó thêm
vào file manifest trong package “Media Inquiry”. Một vài code mẫu bằng cách dùng
logic hook.Ví dụ này thêm một time stamp vào file Media Inquiry mỗi khi dữ liệu
đƣợc lƣu trữ.
Đầu tiên, tạo file AddTimeStamp.php với nội dung nhƣ sau:
<?php
//prevents directly accessing this file from a web browser
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
class AddTimeStamp {
function StampIt(& $focus, $event){
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 26
global $current_user;
$focus->description .= “\nSaved on ”. date(“Ymd g:i a”). “ by
”. $current_user->user_name;
}
}
?>
Bƣớc tiếp theo đ ng kí chức n ng custom bằng cách tạo file logic_hooks.php với
nội dung sau:
<?php
// Do not store anything in this file that is not part of the array or the
hookversion. This file will
// be automatically rebuilt in the future.
$hook_version = 1;
$hook_array = Array();
// position, file, function
$hook_array['before_save'] = Array();
$hook_array['before_save'][] = Array(1, 'custom',
'custom/modules/Media/AddTimeStamp.php ','AddTimeStamp', 'StampIt');
?>
$ Hook_version
Tất cả các logic hooks nên định nghĩa các $hook_version nên đƣợc sử dụng. Hiện
nay, chỉ $ hook_version đƣợc hỗ trợ duy nhất là 1.
$ Hook_version = 1
$ Hook_array
Logic hook của ngƣời phát triển cũng sẽ định nghĩa array
$hook_array. $hook_array là một array hai chiều:
name : tên của event ngƣời phát triển đang hooking custom logic
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 27
array : một array có chứa các tham số cần thiết để (fire) chạy hook
Một quy trình kỹ thuật tốt nhất là cho mỗi entry (đầu vào) trong array cao cấp nhất
đƣợc định nghĩa trên một single line (dòng đơn nhất/ dòng thống nhất) để dễ dàng
tự động thay thế file này. Ngoài ra, logic_hooks.php cũng nên chỉ chứa các định
nghĩa hook, bởi vì tính logic thực sự đƣợc định nghĩa ở bất kỳ nơi nào.
Lấy ví dụ:
Các hooks đƣợc tiến hành theo trật tự khi chúng đƣợc thêm vào array. Chiều đầu
tiên là chỉ đơn giản là thao tác hiện tại, lấy ví dụ before_save . Các hooks sau đây
có sẵn:
Application hooks: Những hook không sử dụng của các đối số $bean.
after_ui_frame
Chạy sau khi cái sƣờn đã đƣợc gọi trƣớc khi footer đã đƣợc gọi.
after_ui_footer
Chạy sau khi footer đã đƣợc gọi
server_round_trip
Chạy vào cuối mỗi Sugar page
Modulehook
before_delete
Chạy trƣớc khi một record đƣợc xóa
after_delete
Chạy sau khi một record đƣợc xóa
before_restore
Chạy trƣớc khi một record đƣợc phục hồi
after_restore
Chạy sau khi một record đƣợc phục hồi
after_retrieve
Chạy sau khi một record đã đƣợc lấy ra từ cơ sở dữ liệu (database). Hook này
không chạy, khi ngƣời phát triển tạo một record mới.
before_save
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Chạy trƣớc khi một record đƣợc lƣu
Page 28
Bây giờ thêm hai file ở trên vào file zip Media Inquiries mà ngƣời phát triển đã lƣu
trữ trƣớc đó. Tạo ra một đƣờng dẫn có tên là “SugarModules/custom/” trong file
zip và thêm hai file trên vào đƣờng dẫn đó, sau đó chỉnh sửa file manifest.php vào
file zip để bao gồm định nghĩa sau trong $install_defs['copy'] array.
array (
'from' => '<basepath>/SugarModules/custom',
'to' => 'custom/modules/jsche_Media',
),
1.2.2.2. Tùy biến thƣ mục vadefs
Ý nghĩa của các biến trong SugarCRM:
id - Một id duy nhất cho module.
language - Một mảng trong đó chứa chi tiết các file ngôn ngữ riêng lẻ cho
Module của ngƣời phát triển. Patch nguồn, file đích, và tên language pack phải
đƣợc quy định cho mỗi file language.
layoutdefs - Một mảng trong đó chi tiết các file layoutdef riêng lẻ, đƣợc sử
dụng chủ yếu để thiết lập các subpanels trong các Module khác. Các patch nguồn và
Module đích phải đƣợc quy định cho mỗi file layoutdef.
layoutfields - Một mảng trong đó chi tiết các fields custom đƣợc thêm vào
các layout hiện có. Các fields sẽ đƣợc thêm vào các views edit và detail của
Module.
vardefs - Một mảng trong đó chi tiết các files vardef riêng lẻ, đƣợc sử dụng
chủ yếu để xác định các fields và các mối quan hệ phi nhiều-nhiều (non many-to-
many) trong các Module khác. Các patch nguồn và module đích phải đƣợc quy định
cho mỗi file vardef.
menu - Một mảng trong đó chi tiết các file menu cho module mới của ngƣời
phát triển. Một patch nguồn và module đích phải đƣợc quy định cho mỗi file menu.
beans - Một mảng trong đó quy định cụ thể các file bean cho module mới
của ngƣời phát triển.
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 29
class: tên class cơ sở Module.
patch: patch (đƣờng dẫn) đến file Bean của ngƣời phát triển nơi mà các class
ở trên đƣợc định nghĩa.
tab: Những kiểm soát liệu Module mới của ngƣời phát triển có nên hay
không nên xuất hiện nhƣ một tab.
relationships - Một mảng trong đó chi tiết các file quan hệ, đƣợc sử dụng để
liên kết các Module mới của ngƣời phát triển với các module hiện có. Một patch
metadata phải đƣợc quy định cho mỗi mối quan hệ.
custom_fields - Một mảng trong đó chi tiết các field custom để đƣợc cài đặt
cho Module mới của ngƣời phát triển.
name: tên nội bộ field custom của ngƣời phát triển. Lƣu ý rằng field custom
của ngƣời phát triển sẽ đƣợc gọi là <name> _c, nhƣ là "_c" chỉ dẫn một field
custom.
label: Nhãn có thể nhìn thấy field custom của ngƣời phát triển
type: loại của field custom. Các giá trị đƣợc chấp nhận bao gồm text,
textarea, double, float, int, date, bool, enum, và relate.
max_size: Kích cỡ lƣu trữ đặc tính tối đa lƣu trữ của field custom.
require_option: Đƣợc sử dụng để đánh dấu các field custom hoặc theo yêu cầu hoặc
là tùy chọn. Giá trị đƣợc chấp nhận bao gồm tùy chọn và theo yêu cầu.
default_value: Đƣợc sử dụng để xác định một giá trị mặc định cho field
custom của ngƣời phát triển.
ext1: Đƣợc sử dụng để xác định một dropdown name (chỉ áp dụng đối với
enum type custom fields.
ext2: không đƣợc sử dụng.
ext3: không đƣợc sử dụng
audited: Đƣợc sử dụng để biểu hiện một field custom có hay không đƣợc kế
thừa. Giá trị đƣợc chấp nhận bao gồm 0 và 1.
module: Đƣợc sử dụng để xác định các module, nơi mà các field custom sẽ
đƣợc thêm vào.
Thƣ mục vadefs đóng vai trò hết sức quan trọng nên việc thao tác ở thƣ mục này
cần có những hiểu biết nhất định. Khi ứng dụng SugarCRM đƣợc gọi lên, các trƣờng
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM
Page 30
đƣợc định nghĩa trong thƣ mục custom/extension/module/ext/vadefs/vardef.ext.php sẽ
đƣợc gọi lên trƣớc, vì thế nên khi định nghĩa các trƣờng dữ liệu thì ngƣời sử dụng nên
định nghĩa ở thƣ mục này, sau đó vào admin tiến hành repair để đồng nhất dữ liệu.
Ví dụ :
<?php
$dictionary["C_project"]["fields"]["project_status"] = array (
'name'
'vname' => 'LBL_PROJECT_STATUS',
'type' => 'radioenum',
'dbType' => 'varchar',
'len' => 50,
=> 'project_status',
'default' => 'enable',
'options' => 'project_status_list',
);
Đây là cách thêm một trƣờng dữ liệu vào module C_project, với vname sẽ đƣợc
khai báo trong thƣ mục custom/modules/C_project/language/en_us.lang.php
<?php
// created: 2012-05-11 17:33:01
// created: 2012-05-15 13:46:18
$mod_strings = array (
'LBL_PROJECT_STATUS' => 'Status',
);
Khi đã khai báo xong hết, muốn đƣa trƣờng dữ liệu này vào sử dụng thì vào
admin/repair để tiến hành repair cho đồng nhất dữ liệu, khi đó dữ liệu này sẽ đƣợc
đồng nhất với dữ liệu trong module gốc.
Với các kiến thức về hệ thống SugarCRM ngƣời sử dụng có thể thao tác
chỉnh sửa hoặc nâng cấp các module chức n ng của mình một cách hiệu quả, ngƣời
sử dụng phải có các kiến thức c n bản về code PHP, Jquery, lập trình hƣớng đối
tƣợng… Và muốn trích lọc đƣợc dữ liệu phải thao tác đƣợc trên MySQL.
Tải về để xem bản đầy đủ
Bạn đang xem 30 trang mẫu của tài liệu "Đồ án Triển khai CRM thực tế", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
do_an_trien_khai_crm_thuc_te.pdf