Đồ án Triển khai CRM thực tế

MỤC LỤC  
Page 1  
MỤC LỤC  
MỤC LỤC  
Page 2  
MỤC LỤC  
Page 3  
MỤC LỤC HÌNH ẢNH  
Page 4  
MỤC LỤC HÌNH ẢNH  
MỤC LỤC HÌNH ẢNH  
Page 5  
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 sng kinh tế, v n  
hóa, xã hội; đƣa xã hội loài ngƣời chuyn mnh 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 mi  
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 để bo  
mật các thông tin nhạy cm... Phn mm quản lí quan hệ khách hàng (CRM) ra đời  
nhằm đgii 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ụ thdựa trên phần mềm mã nguồn mở  
SugarCRM.  
Cấu trúc khóa lun  
Cấu trúc của khóa luận bao gồm các phần sau:  
Phn mở đầu  
Phn ni dung  
MỞ ĐẦU  
Page 8  
Chƣơng 1 gii thiu nn tng sugarcrm: các kiến thc cn biết vcấu trúc thƣ  
mc của SugarCRM, các cách chỉnh sa trong SugarCRM.  
Chƣơng 2 thu thp và phân tích yêu cu: gii thiu vcông ty red, các yêu cu  
vbà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ế hthng: Workflow cho hthng, thiết kế giao din ca tng  
module  
Chƣơng 4 xây dng hthng thc tế cho Red: da vào nhng thiết kế ban đầu  
tiến hành xây dng hthng thc tế.  
Phn kết lun: 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 NN TNG SUGARCRM  
1.1. Kiến trúc SugarCRM  
SugarCRM là phn mm mã ngun msdng 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 nhiu htrcho mi hthng hot động (bao gm 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ế để htrti đa cho những ngƣời sdụng dù  
biết vcode hay không biết vcode php cũng có thcó những tùy biến trong hệ  
thống của SugarCRM để đáp ứng nhu cầu của ngƣời sdụng. Nếu ngƣời sdụng  
không biết vcode php có thsdụng công cdeveloper 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 sgọi các entry point lên (mặc định sgọi index.php  
hoc soap.php).  
Entry point chính của SugarCRM khi đƣợc gọi lên là index.php. Có 3 thông  
schính trong vic gọi các entry point đó là:  
Module: sgọi đến module đƣợc truy cập.  
Action: gọi đến hành động đƣợc thc 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 hthng nhm  
hn chế nhng stiếp cận cơ sở dliệu và t ng tốc độ hin thnội dung vì khi load  
trang web lên nội dung sẽ đƣợc ly trong bnhcache.  
Custom: Thƣ mục này đảm nhn vic tp trung lại các chỉnh sa ca nhng  
ngƣời phát triển, khi các nhà phát triển có những thay đổi trong Studio thì trong thƣ  
mc custom stự độ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 chnh sa cn thiết cho hthng của mình bằng  
cách chỉnh sửa trong module custom này.  
Data: nhng files hthng 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 dng 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: Nhiu 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 phn 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 hu hết các chức  
n ng có li rộng rãi nhất đƣợc sdng .  
Metadata: Thƣ mục này chứa các mối quan hgiữa các module với nhau.  
Modules: Bao gm tt cả các chức n ng trong hệ thống đƣợc hin 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ể thc hin ở  
thƣ mục Modules những nhƣ thế sẽ ảnh hƣởng cho vic tập trung code và khó cho  
vic chnh 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 mi module đại din cho mt thc thtƣơng ng trong mc  
đích kinh doanh, ví dnhƣ là module “contact” trong SugarCRM. Mt module bao  
gm 3 phn chính đó là lƣợc đồ dliu, giao din ngƣời dùng và chc n ng ng  
dng. 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 ca một thƣ mục gc  
Dashlets: Sẽ là nơi chứa các mảng dùng để lƣu trthông tin ca module có  
thhin thị ở trang ch, mc định trang chtrong SugarCRM shin thcác  
thông tin chính ca tng module. Vì vy nếu mun hin ththông tin gì ca module  
ra ngoài màn hình trang chthì khai báo ở đây. Mặc định ca Dashlets sly 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 chui hin thtrong module.  
Vì SugarCRM là mt phn mm đa ngôn ng, nên tt các các nhãn ca module sẽ  
đƣợc định nghĩa ti ti thƣ mc này để tin li cho việc thay đổi ngôn ngmà  
không nh hƣởng đến vic hin thcác chui hin thra ngoài ứng dng.  
Metadata: Thƣ mc này có nhiêm vlƣu các file hin thca module bao  
gm vic hin thcá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ƣ mc này chƣa các các dòng HTML đảm nhim vic hin thdữ  
liu ra bên ngoài màn hình ứng dng.  
Views: Cách thc hin thdliu ca SugarCRM đƣợc sdng bng nhiu  
cách, và Views chính là thƣ mc để đảm nhim mt trong các công việc đó, nơi nay  
slƣu các file .php ca màn hình editview,detailview hay là listview.  
Khi gii thiu vcác thành phn ca module thƣờng hay nhc đến màn hình  
editview, detailview hay listview, các màn hình này sẽ đảm nhim nhng công vic  
cthcho vic hin thnhƣ sau:  
ListView : Là màn hình shin thcác danh sách các dliu có trong  
module, màn hình shin thmặc định khi nhp vào mt module nào đó, trong màn  
hình này còn có các chc n ng nhƣ search.  
EditView: Là màn hình hin thra các trƣờng để hin thcác trƣờng dliu  
hin có ca module để ngƣời sdng nhp vào.  
DetailView: Là màn hình hin ththông tin chi tiết dliu đã đƣợc nhp và  
đã đƣợc lƣu xung cơ sdliu.  
Bên cnh các thƣ mc chính trên SugarCRM còn bao gm nhng tâp tin bổ  
sung nhƣ sau:  
Form.php: Tp tin này có chc n ng làm cho Javascript xác nhn các hành  
động chnh sa khi ngƣời sdng có nhng thay đổi  
Menu.php: Tp tin này làm nhim vhin thra các phím tt menu, đƣợc  
hin thị ở bên trái phía trên ca màn hình sdng, mi menu này sliên kết vi  
màn hình listview, hay editview tùy theo tng trƣờng hp sdng  
Vadefs.php: Tp tin này sẽ định nghĩa các trƣờng dliu ca module, các  
trƣờng dliu có thể đƣợc định nghĩa để lƣu xung database hoc không cho lƣu  
xung database. Ngoài ra các mi quan hgia module và module cũng có thể đƣợc  
định nghĩa ở đây. ( các module có thcó các mi quan hnhƣ là: 1-n, n-n,1-1).  
SugarBean.php: Tập tin này nằm dƣới thƣ mục '<sugar root> / dliu cha  
các lớp cơ sở SugarBean đều đƣợc sdng. Bt kmodule đọc, viết hoc hin thị  
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM  
Page 14  
các dữ liu smrng lớp này. SugarBean thc hin tt cả các nâng nặng cho dữ  
liệu tƣơng tác, xử lý mi quan h, ...  
1.2.  
Tùy biến trong SugarCRM  
SugarCRM đƣợc phát triển để giúp các ngƣời sdụng dù không biết vcode  
PHP vẫn có thcó những chỉnh sửa vgiao diện hoc viết thêm các module đơn  
giản để đáp ứng các yêu cầu của ngƣời sdụ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 ctrong 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 cRepair trong System  
Các bƣớc để tạo mới 1 module trong SugarCRM dựa trên các công ccó sẵn  
trong trang chcủa Admin. Trong SugarCRM mỗi bảng dliệu đều ứng với mỗi  
module đƣợc đặt tên tƣơng ứng, ngoài ra SugarCRM còn htrcho vic tạo các  
mối quan hgiữa các module với nhau thông qua công cstudio. Dƣới đây là các  
hình ảnh cũng nhƣ thao tác minh họa cho vic tạo mới các module và thiết lập các  
mối quan hgiữa các module với nhau.  
Bƣớc 1: Tạo mới package (package là mt gói có thchƣa mt hoc nhiều  
module)  
 
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM  
Page 16  
1
To mi package  
B1: Vào  
AdminModule  
Builder  
B2: To mi 1  
package,  
Điền tên package,key  
và save lại.  
Màn mình module builder  
Màn hình to mi package  
Bảng 1: To mi mt package trong SugarCRM  
Để có thtạo mới đƣợc mt module trong hthống thì trƣớc hết cần phi 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 sdụng có thdễ 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 sdụ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
To mi module  
B1: Click new  
module  
B2: Điền thông tin  
Module  
- Module Name  
- Label  
- Chn Type  
Màn hình to mi module  
Bảng 2: To mi mt 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 cStudio.  
A. Fields  
B1: Chn test1Fields  
Add Fields  
B2: Điền thông tin  
Fields  
Save li.  
Màn hình edit Fields  
B. EditView  
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM  
Page 19  
B1: Chn test1   
LayoutsEditView  
- EditView là  
giao diện thêm  
mi hoc chnh  
sa một dòng dữ  
liu vi Module  
đó.  
B2: Tại đây ngƣời  
Màn hình Edit View  
dùng có thể kéo thả  
nhng Fields(đã add)  
từ bên ca sToolbox  
sang ca sLayout và  
ngƣợc li.  
- Sau khi thiết kế  
giao din Edit ta  
chn Save.  
C. DetailView  
B1: Chn test1   
LayoutsDetailView  
- DetailView là  
giao din hin  
Màn hình Detail View  
thchi tiết ca  
một trƣờng dữ  
liu 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 sToolbox  
sang ca sLayout và  
ngƣợc li.  
- Ca sLayout  
là nơi chứa  
nhng fields ca  
màn hình  
DetailView ca  
Module.  
- Sau khi thiết kế  
giao din Detail  
ta chn Save.  
D. ListView  
B1: Chn test1   
LayoutsListView  
- ListView là giao  
din Hin thị  
danh sách các  
Records trong  
Modulel đó.  
B2: Ti đây ngƣời  
dùng có thể kéo thả  
nhng Fields(đã add)  
từ bên ca sHidden  
sang ca sAvailable  
và ngƣợc li.  
- Sau khi thiết kế  
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM  
Page 21  
giao din List ta  
chn Save.  
E. Search  
B1: Chn test1   
LayoutsSearchBas  
ic Search  
- Basic Search là  
giao din Hin  
thị các tiêu chí  
search các  
record ca  
module.  
B2: Tại đây ngƣời  
dùng có thể kéo thả  
nhng Fields(đã add)  
từ bên ca sHidden  
sang ca sDefault và  
ngƣợc li.Nhằm thêm  
bớt các tiêu chí search  
cho module.  
- Sau khi thiết kế  
giao din  
Search ta chn  
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 sdụng có ththiế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 hoc 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 htrcho vic 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 sdụng sẽ  
tiến hành Deloy hoc là Publish để có thể đƣa module mới tạo vào trong hthống.  
4
Deploy Module  
Sau khi tùy chỉnh  
Module bằng công cụ  
Studio chúng ta có thể  
sdụng Module này  
hoc Publish ra ngoài để  
cài đặt sau.  
A. Deploy  
- Để sdng  
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 sdng trong hthng SugarCRM  
 
CHƢƠNG 1: GIỚI THIỆU NỀN TẢNG SUGACRM  
Page 23  
Sau khi packages mới đƣợc published, ngƣời sdụ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 sdụ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 sdụng có thtạo các mối quan h, cũng nhƣ  
thay đổi lại các nhãn cho các module, ngƣời sdụng có thtạo các quan h: 1-1, 1-  
n, n-n trực tiếp thông qua công cnày.  
H nh 6: các quan hgiữa các module vi 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 sdụng có thtạo mới mt module đơn  
gin, và tạo các quan hgiữa các module trong hthống mà không cần hiểu biết  
nhiều code PHP. Tuy nhiên nếu mun mrộng các ứng dụng của hệ thống cần có  
những hiểu biết vcấu trúc của từng thƣ mục thì mi có chỉnh sửa sâu vào hệ  
thống. Dƣới đây là phần giới thiệu vchứ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 sdụ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 sdụ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 skiện trong SugarCRM, các skiện có thể  
gọi đƣợc các action trong hthống ví d:  
H nh 7: Cấu trúc code ca 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 dliệ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 dliệu này vào sdụng thì vào  
admin/repair để tiến hành repair cho đồng nhất dliệu, khi đó dliệu này sẽ đƣợc  
đồng nhất với dliệu trong module gốc.  
Với các kiến thức vhthống SugarCRM ngƣời sdụng có ththao tác  
chỉnh sửa hoc nâng cấp các module chức n ng của mình mt cách hiệu quả, ngƣời  
sdụng phải có các kiến thức c n bn vcode PHP, Jquery, lập trình hƣớng đối  
tƣợng… Và muốn trích lọc đƣợc dliệu phải thao tác đƣợc trên MySQL.  

Tải về để xem bản đầy đủ

pdf 114 trang yennguyen 04/04/2025 230
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:

  • pdfdo_an_trien_khai_crm_thuc_te.pdf