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

Module manpower cost đƣợc tạo theo cách thông thƣờng, bằng cách sử dụng module builder để tạo ra module C_Manpowercost gồm các field: Team, Project hour, Project minutes, và Description. Field project đƣợc tạo bằng cách tạo mối quan hệ n-1 với module project. Sau khi đã tạo xong các field và tiến hành deloy để đƣa module vào hệ thống. Ngƣời phát triển sẽ tiến hành các chỉnh sửa nhƣ: sẽ lấy danh sách các team ở module Teams gán vào danh sách dropdown của field team.

pdf115 trang | Chia sẻ: lylyngoc | Lượt xem: 2387 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu 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, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ngày bắt đầu dự án End Date: dùng để lƣu ngày kết thúc dự án Status: dùng để lƣu trạng thái của dự án(enable/disable) Description: mô tả về dự án PROJECT Project Name Project Manager Client Start Date End Date Status P oject Code Description IDproject H nh 25: Các thuộc tính của thực thể Project CHƢƠNG 2: THU THẬP VÀ PHÂN TÍCH YÊU CẦU Page 54 2.7. Các mẫu Report tham khảo Các mẫu Report này mang tính chất tham khảo để thiết kế giao diện cho các module report cũng nhƣ định dạng cho các file excel khi xuất các report. 2.7.1. Mẫu Report Project Cost Estimate Project name: World trade center Branding & design JOB Code: VIN.001/1011 Client: Vinacapital Business type Real Estate Project period From: To: Project leader: Ms Long Uyen INTERNAL PROJECT MAN HOUR & COST ESTIMATION Title Projected Hour Cost per hours (USD) Amount (USD) MAN POWER COST: 710 Client services 8 20 160 Designers 15 20 300 Creative Director 5 50 250 - - - - - 0 PRODUCTION COST 500 0 Nhat Thong 250 Vietnam airlines (air ticket) 250 0 0 TOTAL - - 1.210 Bảng 6: Mẫu Report Project Cost Estimation CHƢƠNG 2: THU THẬP VÀ PHÂN TÍCH YÊU CẦU Page 55 2.7.2. Mẫu Report Project Cost Actual (CR) Project name: World trade center Branding & design JOB Code: VIN.001/1011 Client: Vinacapital Business type Real estate/ FMCG/ Education/Service Project period From: 11-Thg10 To: 11-Thg11 Project leader: Ms Long Uyen PROJECTED V.S ACTUAL MAN HOUR & COST Title Person incharge Hours Diff MAN POWER COST: Projected Actual CR Uyen 5 2 3 Designer Tho 5 Dinh 5 Lan Anh 5 Toan 5 CD Lenny 5 PRODUCTION COST Nhat thong Itaxa Vietnam airline TOTAL: Bảng 7: Mẫu Report Project Cost Actual (CR) CHƢƠNG 2: THU THẬP VÀ PHÂN TÍCH YÊU CẦU Page 56 2.7.3. Mẫu Report Project Cost Actual (MA) Project name: World trade center Branding & design JOB Code: VIN.001/1011 Client: Vinacapital Business type Real estate/ FMCG/ Education/Service Project period From: 11-Thg10 To: 11-Thg11 Project leader: Ms Long Uyen PROJECTED V.S ACTUAL MAN HOUR & COST Title Person incharge Hours Cost per hours Amount (USD) MAN POWER COST: Projected Actual 640 CR Uyen 5 3 20 60 Designer Tho 5 2 20 40 Dinh 5 3 20 60 Lan Anh 5 7 20 140 Toan 5 8 20 160 CD Lenny 5 9 20 180 - PRODUCTION COST 300 - Nhat thong 100 Itaxa 100 Vietnam airline 100 - TOTAL: 940 Bảng 8: Mẫu Report Project Cost Actual (MA) CHƢƠNG 2: THU THẬP VÀ PHÂN TÍCH YÊU CẦU Page 57 2.7.4. Mẫu Report Profit And Loss (CR) PROFIT AND LOSS - CR W.I.P BY PROJECT Job code Person in Charge Client Description Project period Man Hours Projection Man Hours Actual Renvenue (VND) VIN.001/1011 Ms. Uyen Vinacapital World trade center Branding & design đƣa text FromDate , ToDate vào đây, ví dụ: 23/04/2012 to 30/04/2012 [tổng thời gian estimation] [Tổng giờ actual ] 50.000.000 TOTAL: 50.000.000 Bảng 9: Mẫu Report Profit And Loss (CR) 2.7.5. Mẫu Report Profit And Loss (MA) Job code Person in Charge Client Description Project period Man Hours Projection Man Hours Actual Renvenue (VND) Manpower cost Production cost Margin (VND) VIN.001/1011 Ms. Uyen Vinacapital World trade center Branding & design 50.000.000 640 300 49.999.060 - - TOTAL: 50.000.000 640 300 49.999.060 Bảng 10: Mẫu Report Profit And Loss (MA) 2.7.6. Mẫu Report Revenue REVENUE PROJECTION From: 1 Nov To: 30 Nov Date Invoice mber Project code Clients Description Amount (VND) VAT Total Amount (VND) Payment status 01- Thg11 45 VIN.001/1011 Vinacapital World trade center Branding & design 50.000.000 5.000.000 55.000.000 Paid Bảng 11: Mẫu Report Revenues CHƢƠNG 2: THU THẬP VÀ PHÂN TÍCH YÊU CẦU Page 58 2.7.7. Mẫu Report Timesheet (%) TIMESHEET in OCT 2011 Name Working hours Billable hours Inputted % Input/ Billable hours % Input/ Working hours Uyen 176 110 165 150% 94% Khoi 176 110 4 4% 2% Adie 176 110 55 50% 31% Thao 176 110 161 146% 91% Diep 176 110 166 151% 94% Khanh Linh 176 110 77 70% 43% Vy 176 110 121 110% 69% Hoang Uyen 176 110 147 133% 83% Huong 152 95 152 160% 100% Thuy Linh 176 110 155 141% 88% Lan Anh 176 110 161 146% 91% Dinh 168 105 76 72% 45% Dammy 152 95 138 146% 91% Toan 176 110 120 109% 68% Pham 168 105 104 99% 62% Tan Hung 120 75 120 160% 100% Quang 96 60 99 165% 103% Hung 176 110 168 153% 95% Tho 168 105 160 152% 95% Hong Anh 56 35 31 89% 55% Nhat Linh 168 105 161 153% 96% Ai 168 105 60 57% 36% Lenny 176 110 75 68% 43% TOTAL 3.704 2.315 2.676 116% 72% Bảng 12: Mẫu Report Timesheet (%) CHƢƠNG 2: THU THẬP VÀ PHÂN TÍCH YÊU CẦU Page 59 2.7.8. Mẫu Report Timesheet TIMESHEET BY STAFF, BY PROJECT Name of Staff: Code RED-001 Total Hours Date 01-Thg11 02-Thg11 03-Thg11 04-Thg11 05-Thg11 29-Thg11 30-Thg11 Job Code VIN.001/1011 1 2 5 4 12 JC-002 JC-003 JC-004 JC-005 Total 1 2 5 0 4 0 0 12 Bảng 13: Mẫu report Timesheet CHƢƠNG 2: THU THẬP VÀ PHÂN TÍCH YÊU CẦU Page 60 2.8. Khảo sát hệ thống server đang hoạt động của Red Hiện tại công ty Red đang thuê VPS Server tại trang Đặt tính của Server Thông tin chung gói VPS 5 Sever đặt tại Việt Nam HDD 250GB RAM 4GB + 1 GB(Free) CPU E3-1230/E5620 Data transfer Unlimited Cổng trong nƣớc 100Mbps Cổng quốc tế 2Mbps/512Kbps Host Kloxo CentOs 5.x: Cài sẵn Apache 2.2, PHP5, DNS, MySQL, Mailserve CHƢƠNG 3: THIẾT KẾ HỆ THỐNG Page 61 CHƢƠNG 3: THIẾT KẾ HỆ THỐNG Hệ thống CRM của công ty Red phải đƣợc thiết kế để đảm bảo đƣợc những yêu cầu mà công ty Red đặt ra, hệ thống phải đảm bảo đƣợc tính bảo mật dữ liệu giữa các nhân viên, giao diện phải đơn giản, dễ hoạt động đối với nhân viên bình thƣờng chỉ cần 2 module chính là timesheet và leaving, nên khi đ ng nhập vào hệ thống thì màn hình đầu tiên sẽ là màn hình điền timesheet để nhân viên dễ sử dụng. Đối với ngƣời quản trị và ngƣời quản lý thì phải có khả n ng phân quyền cho các nhân viên khác và không đƣợc truy cập vào module salary của hệ thống. Trong công ty chỉ có nhân viên kế toán là đƣợc phép truy cập và thao tác đƣợc trên module salary. Font chữ sử dụng cho hệ thống phải là font aller. Khi đ ng nhập vào Red CRM giao diện đầu tiên của Red là màn hình điền timesheet. Giao diện của Red gồm các giao diện của module Account, Salary, Team, Project, Timesheets… trong các module này module khi vào module nào cũng đều có cách hiện thị chung của SugarCRM đó là màn hình Listview, khi nhấp vào các thông tin chi tiết sẽ hiện ra màn hình Detail View, khi tạo hoặc chỉnh sửa các thuộc tính thì sẽ hiện ra màn hình Edit View để hiển thị màn hình chỉnh sửa các thông tin, tuy nhiên để đảm bảo sự tiện dụng cũng nhƣ mục đích của ngƣời sử dụng, giao diện của module Timesheets và Leaving có những thay đổi khác. CHƢƠNG 3: THIẾT KẾ HỆ THỐNG Page 62 HOME ACCOUNT PROJECTTEAMSSALARY TIMESHEETS LEAVING REPORTS PUBLICDAYS ADMINISTRATOR MANPOWER COST ESTIMATION PRODUCTION COST ESTIMATION PRODUCTION COST ACTUAL REVENNUES ESTIMATION REVENNUES ACTUAL REPORT ESTIMATION COST REPORT ACTUAL COST (MA) REPORT ACTUAL COST (CR) REPORT PROFIT AND LOSS (CR) REPORT PROFIT AND LOSS (MA) REPORT REVENUES REPORT TIMESHEET USERS SUGAR CONNECT SYSTEM EMAIL DEVELOPER TOOLS BUG TRACKER SECURITY SUITE H nh 26: WorkFlow của hệ thống Red online timesheet (Red CRM) 3.1. Module Account Giao diện màn hình ListView của module Account bao gồm các thông tin nhƣ Name, City, Phone, User, Email Address, Date Created. Ngoài ra mặc định màn hình basic search thì sẽ search theo Name. H nh 27: Giao diện màn h nh listview của module Account CHƢƠNG 3: THIẾT KẾ HỆ THỐNG Page 63 Giao diện của màn hình EditView của module Account gồm các field để điền thông tin cần thiết cho dự án. H nh 28: Giao diện màn h nh editview của module Account 3.2. Module ManPower Cost Giao diện của module Manpower Cost gồm các file nhƣ: Teams, Projects Hour, Projects, Assign to và cuối cùng là Description với Teams và minutes đƣợc thiết kế với dạng dropdown ( combo box), Projects và Assign to là dạng select cho ta có thể chọn trực tiếp từ module Project và User. H nh 29: Giao diện tạo mới Manpower Cost CHƢƠNG 3: THIẾT KẾ HỆ THỐNG Page 64 3.3. Module Production cost actual Giao diện tạo mới production cost actual đƣợc thiết kế đơn giản với các field nhƣ: Title, Amount, Projects, Description với Projects đƣợc thiết kế select cho phép chọn tới các project đƣợc tạo ở module Projects. H nh 30: Giao diện tạo mới Prduction cost actual 3.4. Module Production cost estimation Giao diện này đƣợc thiết kế tƣơng tự nhƣ module production cost actual vì 2 module này giống nhau về các files nhƣ : Title, Amount, Projects, Description với Projects đƣợc thiết kế select cho phép chọn tới các project đƣợc tạo ở module Projects. H nh 31: Giao diện tạo mới Production cost Estimation 3.5. Module Projects Module Project đƣợc thiết kế để lƣu giữ các thông tin cần lƣu trữ cho một dự án của công ty các field bao gồm: Project Code, Project Name, Projects Manager, Client, Start Date, End Date, Status, Description. Với Projects Manager và Client đƣợc thiết kế dƣới dạng select cho phép chọn các user ở module User, Status đƣợc CHƢƠNG 3: THIẾT KẾ HỆ THỐNG Page 65 thiết kế là các radio button để hiện thị trạng thái là Enable hay là Disable. Ngoài ra Start Date, End Date là kiểu datetime, cho phép ngƣời dung chọn ngày để hiện thị ra textbox. H nh 32: Giao diện mới mới Projects 3.6. Module Revenues Estimation Giao diện của Revenues Estimation đƣợc thiết kế để lƣu các chi phí trong một hóa đơn dự tính gồm: Projects, Payment Status, Amount, Date, VAT Amount, Total Amount, User và cuối cùng là Description. Projects,User tƣơng tự nhƣ các module trƣớc đƣợc thiết kế với dạng select. Bên cạnh đó field Payment Status đƣợc thiết kế là check box khi check vào thì sẽ là “Paid”, và kiểu Date là kiểu date time. H nh 33: Giao diện tạo mới Revenues Estimation 3.7. Module Revenues Actual Giao diện của Revenues Actual cũng đƣợc thiết kế tƣơng tƣ nhƣ module Revenues Estimation gồm các field: Projects, Payment Status, Amount, Date, VAT Amount, Total Amount, User và cuối cùng là Description. Projects,User tƣơng tự nhƣ các module trƣớc đƣợc thiết kế với dạng select. Bên cạnh đó field Payment Status đƣợc thiết kế là check box khi check vào thì sẽ là “Paid”, và kiểu Date là CHƢƠNG 3: THIẾT KẾ HỆ THỐNG Page 66 kiểu date time. Bên cạnh đó điểm khác ở đây là Revenues Actual còn có them thuộc tính Invoice Number để lƣu số hóa đơn. H nh 34: Giao diện tạo mới Revenues Actual 3.8. Module Salary Giao diện của module Salary đƣợc thiết kế để lƣu lƣơng của nhân viên vào các tháng trong n m nên đƣợc thiết kế khá là đơn giản với các textbox để lƣu số tiền lƣơng ứng với mỗi tháng và dropdown hiện thị n m hiện tại là n m 2012 trở đi. H nh 35: Giao diện tạo mới Salary CHƢƠNG 3: THIẾT KẾ HỆ THỐNG Page 67 3.9. Module Timesheets Giao diện Timesheet đƣợc thiết kế thân thiện với ngƣời dùng với phần lịch hiển thị các ngày trong tháng hiện tại, và trên lịch sẽ hiện thị ra đâu là ngày mình đã xin nghỉ, đâu là ngày hiện tại. Với Project, Project task, minutes đƣợc thiết kế là các dropdown. Các thông tin khi đƣợc nhập sẽ hiển thị bên dƣới phần Added entries. H nh 36: Giao diện khi nhập Timesheets 3.10. Module Leaving Module Leaving đƣợc thiết kế với ý tƣởng nhƣ module Timesheet cũng bao gồm một phần lịch hiển thị các ngày trong tháng. Kiểu xin nghỉ gồm 2 radio button là Full day và Half day, Reason đƣợc thể hiện qua dropdown để cố định các nguyên nhân xin nghỉ, ngoài ra có phần Description để mô tả thêm. H nh 37: Giao diện khi nhập Leaving CHƢƠNG 3: THIẾT KẾ HỆ THỐNG Page 68 3.11. Module PublicDays Module PublicDays đƣợc thiết kế với các thuộc tính Puclic Day là date time để hiển thị ngày nghỉ mặc định của công ty cũng nhƣ các ngày nghỉ lễ phép, và User đƣợc select đến module User. H nh 38: Giao diện khi tạo mới Publicdays 3.12. Module Report Module Report đƣợc thiết kế gồm danh sách các report cần phải xuất ra trong hệ thống gồm: report estimate cost, report actual cost (MA), report actual cost (CR), report profit and loss (CR), report profit and loss (MA), report revenues projection, timesheet, timesheet report (%) H nh 39: Giao diện các Report trong hệ thống CHƢƠNG 3: THIẾT KẾ HỆ THỐNG Page 69 3.12.1. Report Estimate Cost Giao diện report estimate cost đƣợc thiết kế để lƣu trữ các thông tin của dự án đƣợc chọn trên dropdown, phía dƣới phần internal project man hour & cost estimation gồm tên của các phòng ban số giờ dành cho phòng ban đƣợc thêm vào dự án, cost per hours để hiển thị số tiền đƣợc cấp cho các phòng ban trên mỗi giờ làm việc, và cuối cùng là amount để tính số tiền dự tính dành cho các phòng ban đó trong bao nhiêu giờ. Phần production cost estimation để hiển thị các chi phí thực tế nhƣ: tiếp khách, vé tàu.. H nh 40: Giao diện Report Estiamte Cost 3.12.2. Report Actual Cost (MA) Thiết kế giao diện cho report actual cost (MA) về phần thông tin dự án thì giống nhƣ report estimate cost, khác giữa phần báo cáo thực tế là sẽ có thêm person incharge để hiển thị các nhân viên đƣợc thêm vào dự án của từng team, projected là số giờ dự định của từng team, actual sẽ là số giờ thực tế của từng nhân viên đó làm, phần cost per hours (VND) là số tiền đƣợc tính cho các nhân viên với từng giờ họ làm đƣợc. Cuối cùng là amount để tính tổng tiền thực tế của từng nhân viên đối với dự án đƣợc chọn trên dropdown. Revenues actual, revenues estimation đƣợc lấy dữ CHƢƠNG 3: THIẾT KẾ HỆ THỐNG Page 70 liệu từ chính 2 module trên, revenues – cost (actual) sẽ lấy phần revenues actual trừ cho production cost actual và manpower cost. H nh 41: Giao diện Report Actual Cost (MA) 3.12.3. Report Actual Cost (CR) Giao diện của report actual cost (CR) đƣợc thiết kế có những điểm giống và khác nhau với report actual cost (MA) mục đích của module này là để hiển thị ra sự chênh lệch số giờ giữa các nhân viên thuộc các team tham gia từ từng dự án. H nh 42: Giao diện Report Actual Cost (CR) CHƢƠNG 3: THIẾT KẾ HỆ THỐNG Page 71 3.12.4. Report Profit And Loss (CR) Giao diện của report profit and loss gồm project đƣợc thiết kế là multiple để cho phép có thể chọn cùng lúc nhiều project để xuất ra báo cáo, client là dropdown chỉ đƣợc chọn khách hàng từ danh sách khách hàng. Start date và Endate là field đƣợc thiết kế kiểu date time để lọc ngày bắt đầu và kết thúc mục đích liệt kế các thông tin của dự án tồn tại trong khoảng thời gian đó. H nh 43: Giao diện Report Profit And Loss (CR) 3.12.5. Report Profit And Loss (MA) Phần thiết kế của report profit and loss (MA) về cơ bản cũng tƣơng tự nhƣ report profit and loss (CR) gồm project đƣợc thế kế là multiple để cho phép có thể chọn cùng lúc nhiều project để xuất ra báo cáo, client là dropdown chỉ đƣợc chọn khách hàng từ danh sách khách hàng. Start date và Endate là field đƣợc thiết kế kiểu date time để lọc ngày bắt đầu và kết thúc mục đích liệt kế các thông tin của dự án tồn tại trong khoảng thời gian đó. Ngoài ra nó còn hiển thị thêm: Manpower cost, production cost, margin. CHƢƠNG 3: THIẾT KẾ HỆ THỐNG Page 72 H nh 44: Giao diện Report Profit And Loss (MA) 3.12.6. Report Revenues Projection Giao diện Revenues Projection đƣợc thiết kế với các yêu cầu lọc đơn giản gồm : Start date, end date, để lọc khoảng thời gian thực hiện các hóa đơn. Thông tin của các hóa đơn sẽ đƣợc hiện thị gồm : Date, Invoice Number, Project Code, Client, Description, Amount, VAT, Total Amount, Payment status. Các thông tin đó đƣợc lấy hoàn toàn từ module Revenues Actual. H nh 45: Giao diện Report Revenues Projection 3.12.7. Report timesheet Report timesheet đƣợc thiết kế với nhiều tiêu chí để lọc dữ liệu gồm: 2 radio button là by project và by employee khi chọn vào radio nào thì sẽ hiện ra danh sách tƣơng ứng với project hay employee, dropdown month để hiện thị các tháng trong n m. Khi chọn theo radio by project chọn một dự án mà không chọn employee nào CHƢƠNG 3: THIẾT KẾ HỆ THỐNG Page 73 thì mặc định sẽ hiển thị ra hết các nhân viên trong dự án đó thời gian làm việc của từng nhân viên. Khi chọn hiển thị theo Employee thì report sẽ hiện ra thông tin số giờ làm việc của các nhân viên ứng với các dự án đã đƣợc lọc. H nh 46: Giao diện Report Timesheet đƣợc lọc theo dự án H nh 47: Giao diện Report Timesheet đƣợc lọc theo nhân viên CHƢƠNG 3: THIẾT KẾ HỆ THỐNG Page 74 3.12.8. Report Timesheets (%) Giao diện của report timesheet (%) đƣợc thiết kế với các tiêu chí lọc dự liệu ít hơn report timesheets: employee (có thể chọn một hoặc nhiều nhân viên), dropdown để hiển thị các tháng trong n m. Sau khi lọc dữ liệu xong, dữ liệu đƣợc hiển thị lại và đƣợc tính phần tr m theo từng cột %. H nh 48: Giao diện Report Tímesheet (%) CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 75 CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Dựa trên khảo sát và có đƣợc những thông tin cần thiết cần lƣu trữ cho hệ thống bên công ty Red. Với những module có sẵn trong phần mềm mã nguồn mở SugarCRM nhƣ: Account, Contact, Lead… thì chỉ có module Account có thể hỗ trợ đƣợc cho hệ thống nên giữ lại và sẽ có những chỉnh sửa để đáp ứng đúng theo yêu cầu bên phía Red, đối với các công việc còn lại phải xây dựng thêm các module: Projects, Teams, Salary, Timesheets, Leaving, Reports, Production cost actual, Revenues actual, Production cost estimation, Revenues estimation, publicdays H nh 49: Màn h nh đăng nhập vào hệ thống 4.1. Module Account Module Account là module có sẵn của SugarCRM, vì thế nó có nhiều thông tin lƣu trữ không cần dùng đến khi áp dụng bên Red. Đầu tiên sử dụng công cụ module builder để xây dựng các dữ liệu về khách hàng cần lƣu là: Name, Email, Office phone, Fax, Billing Address... Ngoài ra phải bổ sung thêm field: business type để xem nhƣng khách hàng đó thuộc kiểu kinh doanh gì, business type gồm: Real Estate, FMCG, Education, Service, Others. Cách tạo một drop down để lƣu trữ business type: vào đƣờng dẫn CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 76 custom/include/language/en_us.lang.php Đây là nơi để khai báo các app_list_strings, tiến hành thêm đoạn code $GLOBALS['app_list_strings']['business_type_dom']=array ( '' =>'', 'Real Estate' => 'Real Estate', 'FMCG' => 'FMCG', 'Education' => 'Education', 'Service' => 'Service', 'Others' => 'Others', ); Sau đó có thể dùng công cụ studio để tùy biến giao diện muốn hiển thị H nh 50: Màn h nh edit account 4.2. Module Projects Đầu tiên xây dựng module C_Project bằng công cụ module builder gồm các field nhƣ: Project code, project name, start date, end date, project manager, client, status, description. Lƣu ý các field đƣợc đánh dấu sao là các field bắt buộc phải nhập. Project code phải xử lý không cho phép nhập trùng project code. End date không đƣợc nhỏ hơn start date. Jquery để xử lý việc kiểm tra project code không đƣợc trùng, end date không đƣợc nhỏ hơn start date CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 77 // Khoi tao ham validate rong. Ham nay phai nam ngoai, khong duoc nam trong jQuery function custom_validate(){} function removeValidate(){} // jQuery $(document).ready(function(){ // Trang vua khoi dong thi gan nhung thuoc tinh sau $('#end_date').parent().append('<div id="date_validator" style="color: red;">'); $('#job_code').parent().append('<div id="code_validator" style="color: red;">'); // Xoa bo trang thai thong bao validate sau 3.5s removeValidate = function(){ $('#job_code').css('background-color', 'white'); $('#start_date').css('background-color', 'white'); $('#end_date').css('background-color', 'white'); } // Xoa bo Project Code khi duplicate if($('input[name=duplicateSave]').length>0){ if($('input[name=duplicateSave]').val()=='true'){ $('#job_code').val(''); } } // Khoa Project Code lai khi da ton tai (khong cho edit) if($('input[name=record]').val() !=''){ $('#job_code').attr('readonly',true); } // Xoa bo trang thai validate ngay khi nguoi dung nhap Project Code moi $('#job_code').live('keyup', function(){ $('#code_validator').text(''); CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 78 Thêm đoạn Jquery vào đƣợc dẫn: custom/modules/C_project/js/editview.js Muốn đƣa đƣợc Jquery màn hình edit view thì phải include Jquery vào đƣờng dẫn: custom/modules/C_project/metadata/editviewdefs.php Cấu trúc để include vào file editviewdefts.php 'includes' => array ( 0 => array ( 'file' => 'custom/include/javarscripts/jquery.js', ), 1 => array ( 'file' => 'custom/include/javarscripts/jquery.ui.min.js', ), 2 => array ( 'file' => 'custom/include/javarscripts/dateValidate.js', ), 3 => array ( 'file' => 'custom/modules/C_project/js/editview.js', ), ), CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 79 H nh 51: Màn h nh tạo mới Project Khi điền các thông tin cần thiết cho project xong thì tại module project ngƣời sử dụng có thể tạo các thông tin liên quan đến project, nhƣ thêm các nhân viên tham gia vào dự án, điền các chi phí dự tính cho dự án, doanh thu dự kiến dành cho dự án ….. CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 80 H nh 52: Màn h nh chi tiết các thông tin liên quan đến Project CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 81 4.3. Module timesheets Module timesheets đƣợc tạo bằng cách khá là mới mẻ so với các module trƣớc, đầu tiên ngƣời phát triển cũng tạo ra module C_Timesheets trong module builder và không tạo ra bất kì các field nào. Sau khi đã tạo xong module timesheet và deloy để đƣa module vào hệ thống, ngƣời phát triển sẽ tiền hành tạo giao diện cho module timesheet bằng cách chỉnh sửa file view.edit.php trong đƣờng dẫn: custom/modules/C_TimeSheets/views/view.edit.php Hàm để lấy ra danh sách các dự án mà user đ ng nhập đƣợc thêm vào. global $app_list_strings, $mod_strings, $current_user, $db; global $db, $current_user; // Can lay ra project da duoc assign cho phong ban cua current user $sql_get_projects = 'SELECT DISTINCT p.id, p.name, p.job_code FROM c_project_users_c pu LEFT JOIN c_project p ON p.id = pu.project_id LEFT JOIN users u ON u.id = pu.user_id WHERE pu.user_id = "'.$current_user->id.'" AND p.deleted = 0 AND p.project_status = "enable"'; $result = $db->query($sql_get_projects); while($projects = $db->fetchByAssoc($result)){ if($projects['name']!= "") $app_list_strings['project_list'][$projects['id']] = "[" . $projects['job_code']. "] " . $projects['name']; } unset($app_list_strings['project_list']['all']); CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 82 Sau khi đã lấy đƣợc danh sách các dự án, ngƣời phát triển sẽ tiến hành tạo ra giao diện lịch cho màn hình bằng cách sử dụng script. Sau khi đã hiển thị đƣợc phần lịch lên màn hình, ngƣời phát triển tiến hành lọc từng ngày trong lịch ứng với loại ngày: leaving dates, public day, today hay là ngày điền timesheet. //check leaving dates $query = "SELECT * FROM leaving WHERE deleted = 0 AND assigned_user_id='{$current_user->id}'"; $result = $db->query($query); while($row = $db->fetchByAssoc($result)){ $dates = $row['leaving_date'];//04/12/2012,04/18/2012 $dates = explode(",", $dates); if(count($dates) > 0 && $dates[0] != "" ){ for($i=0;$i<count($dates); $i++){ $d = trim($dates[$i]); $month = intval(substr($d,0,2))-1;//tru 1 moi la thang trong javascript $day = intval(substr($d,3,2)); $year = intval(substr($d,6,4)); if($day > 0 && $month > 0 && $year > 0){ if($row['leaving_approval'] == 'approval' && $row['leaving_type']=='fullday'){ $script.= " jQuery('#date').glDatePicker('setSelectedDate', new Date($year,$month,$day), 'leaving'); "; } if($row['leaving_approval'] == 'approval' && $row['leaving_type']=='halfday'){ $script.= " jQuery('#date').glDatePicker('setSelectedDate', new Date($year,$month,$day), 'leave_half_day'); "; } } } } CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 83 Thời gian làm việc của nhân viên Các public day //get all timesheet $query = "SELECT * FROM c_timesheets WHERE deleted = 0 AND assigned_user_id='{$current_user->id}'"; $result = $db->query($query); //display time sheet into javascript while($row = $db->fetchByAssoc($result)){ $date = $row['apply_date'];//2012-04-12 $day = substr($date,8,2); $month = intval(substr($date,5,2))-1;//tru 1 moi la thang trong javascript $year = substr($date,0,4); $script.= " jQuery('#date').glDatePicker('setSelectedDate', new Date($year,$month,$day), 'timesheet'); "; } //public day $publicday_query = "SELECT public_day FROM c_publicdays WHERE deleted = 0" ; $publicday_result = $db->query($publicday_query); while($publicday_row = $db->fetchByAssoc($publicday_result)){ $day = date('d',strtotime($publicday_row['public_day'])); $month = date('m',strtotime($publicday_row['public_day']))-1; $year = date('Y',strtotime($publicday_row['public_day'])); $script.= " jQuery('#date').glDatePicker('setSelectedDate', new Date($year,$month,$day), 'public_day'); "; } CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 84 Ngƣời phát triển khi đã lấy đƣợc dữ liệu cần xuất ra màn hình sẽ tiến hành dùng các code html để hiển thị các dữ liệu ra theo ý muốn. Sau đó sẽ dùng custom code để gọi lại các script,html, hay css vừa tạo ở view.edit.php. Module timesheets đƣợc tạo ra với giao diện dễ sử dụng và khi đ ng nhập vào hệ thống thì mặc định sẽ đƣợc gọi đến module timesheet. Thông tin module timesheet sẽ đƣợc hiển thị trên tấm lịch với các màu tƣơng ứng đƣợc chú thích phía dƣới tấm lịch. Khi điền thời gian làm việc thì nhân viên sẽ chọn ngày và thời gian làm việc rồi bấm vào button add, khi đã add xong các công việc phải làm thì nhân viên sẽ bấm button save để hoàn tất việc lƣu dữ liệu xuống database. Ở module này phải xử lý đƣợc khi nhân viên đã đƣợc cho phép nghỉ thì sẽ không đƣợc add timesheet vào ngày hôm đó. H nh 53: Màn h nh Timesheets 4.4. Module Teams Dựa trên những thiết kế về giao diện ban đầu thì module team sẽ đƣợc tạo ra bằng cách dùng công cụ module builder để tạo ra các field name, cost per hour, assigned to và description. Module này dùng để lƣu thông tin của các nhóm, sau khi tạo thông tin về nhóm xong, thì cho phép thêm các nhân viên vào nhóm. Module teams có mối quan hệ n-n với module user để có thể chọn các user vào team. Tuy nhiên để cho đồng nhất code với hệ thống ta phải bỏ đi button create user ở subpanel user. Cách bỏ button create ở subpanel là vào đƣờng dẫn: custom/modules/C_derpartment/Ext/Layoutdefs/layoutdefs.ext.php Trong file này ta có thể bỏ đi phần tạo button create CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 85 Hàm xử lý cost_per_hour $layout_defs["C_derpartment"]["subpanel_setup"]['users_c_derpar tment'] = array ( 'order' => 100, 'module' => 'Users', 'subpanel_name' => 'default', 'sort_order' => 'asc', 'sort_by' => 'id', 'title_key' => 'LBL_USERS_C_DERPARTMENT_FROM_USERS_TITLE', 'get_subpanel_data' => 'users_c_derpartment', 'top_buttons' => array ( 1 => array ( 'widget_class' => 'SubPanelTopSelectButton', 'mode' => 'MultiSelect', ), ), );} function checkForm(){ var thang1 = 0; if($('#cost_per_hour').val() != ''){cost_per_hour = unformatNumber($('#cost_per_hour').val(),num_grp_sep, dec_sep); if(cost_per_hour > 0){ if(cost_per_hour<0 || isNaN(cost_per_hour)){ cost_per_hour=0; } $('#cost_per_hour').val(formatNumber(cost_per_hour,num_grp_sep, dec_sep)); }else{ $('#cost_per_hour').val(''); } } } CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 86 H nh 54: Màn h nh nhập team và xem các user đƣợc thêm vào team 4.5. Module salary Module salary đƣợc tạo ra để đáp ứng việc lƣu và thay đổi lƣơng của các nhân viên trong công ty, module đƣợc thiết kế đơn giản để nhân viên kế toán có thể nhập lƣơng của từng nhân viên trong từng tháng của n m. Module này đƣợc tạo ra và chỉ duy nhất có nhân viên kế toán mới có quyền vào module này. Đầu tiên ngƣời phát triển cần phải sử dụng module builder để tạo module C_Salary gồm các field là 12 tháng trong n m, và một dropdown là year để chƣa n m cấp lƣơng cho nhân viên trong hệ thống. Khi đã tạo đầy đủ các field cho module salary thì ngƣời phát triển sẽ tiến hành deloy để đƣa module C_Salary vào hệ thống. Khi module salary đƣợc đƣa vào hệ thống, ngƣời phát triển sẽ tiến hành dùng Jquery để format lại tiền lƣơng ứng với từng tháng dành cho nhân viên. Tạo một file script.js và đƣa vào đƣờng dẫn: custom/modules/C_Salary/js/script.js Hàm bên dƣới sẽ giúp cho nhân viên kế toán khi nhập tháng lƣơng của tháng 1 của nhân viên thì các tháng còn lại sẽ tự động đƣợc nhập mức lƣơng đó cho các tháng còn lại trong n m. CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 87 function checkForm(){ var thang1 = 0,thang2 = 0,thang3 = 0,thang4 = 0,thang5 = 0,thang6 = 0,thang7 = 0,thang8 = 0,thang9 = 0,thang10 = 0,thang11 = 0,thang12 = 0; if($('#thang1').val() != ''){ thang1 = unformatNumber($('#thang1').val(),num_grp_sep, dec_sep); if(thang1 > 0){ if(thang1<0 || isNaN(thang1)){ thang1=0; } $('#thang1').val(formatNumber(thang1,num_grp_sep, dec_sep)); $('#thang2').val(thang1); $('#thang3').val(thang1); $('#thang4').val(thang1); $('#thang5').val(thang1); $('#thang6').val(thang1); $('#thang7').val(thang1); $('#thang8').val(thang1); $('#thang9').val(thang1); $('#thang10').val(thang1); $('#thang11').val(thang1); $('#thang12').val(thang1); }else{ $('#thang1').val(''); } } } CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 88 Hàm xử lý tháng lƣơng các tháng còn lại, khi nhân viên kế toán tiến hành cập nhật lƣơng cho các tháng tiếp theo. Hàm đƣợc dùng để cho hệ thống chỉ chấp nhận cho riêng nhân viên kế toán có id là 41be42b0-4a52-2e77-e911-4fa350386d9b đƣợc truy cập vào module salary, và admin cũng không truy cập đƣợc vào module này. Hàm này đƣợc đặt trong đƣờng dẫn: modules/C_Salary/C_Salary.php if($('#thang2').val() != ''){ thang2 = unformatNumber($('#thang2').val(),num_grp_sep, dec_sep); if(thang2 > 0){ if(thang2<0 || isNaN(thang2)){ thang2=0; } $('#thang2').val(formatNumber(thang2,num_grp_sep, dec_sep)); }else{ $('#thang2').val(''); } } function deny(){ global $current_user; if($_GET['module'] == 'C_Salary'){ if($current_user->id != '41be42b0-4a52-2e77-e911- 4fa350386d9b'){ header('Location: index.php?module=Home&warning=1'); } } } CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 89 H nh 55: Màn h nh Salary 4.6. Module report Module report đƣợc tạo ra để cho phép ngƣời quản lý và nhân viên kế toán có thể lọc dữ liệu theo các dự án và xuất các thông tin ra file excel. Module report đƣợc tạo ra có phần khác với các module nhƣ salary hay project. Đầu tiên ngƣời phát triển sẽ dùng module để tạo ra module C_Report mà không có bất kì field nào và deloy để đƣa module vào hệ thống. Khi module đã đƣợc đƣa vào hệ thống ngƣời phát triển sẽ tiến hành tạo giao diện cho cho màn hình danh sách các report bằng các thẻ HTML. Với các thẻ HTML sẽ tạo ra một table gồm nhiều dòng, và mỗi dòng ứng với 1 đƣờng link dẫn đến giao diện của từng report tƣơng ứng. Code HTML đƣợc tạo trong đƣờng dẫn: custom/modules/C_Report/views/view.list.php Tƣơng tự ngƣời phát triển cũng có thể dựa vào các thẻ đó để tạo ra các đƣờng link liên kết đến các report chi tiết. CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 90 Khi đã tạo ra đƣợc giao diện danh sách các report, ngƣời phát triển tiến hành tạo ra file action_view_map.php nằm trong đƣờng dẫn custom/modules/C_Report/ <table border="0" cellpadding="0" cellspacing="0" width="100%" class="h3Row"> <img src="include/images/blank.gif" alt="spacer" width="10" height="2" border="0"><img src="include/images/blank.gif" alt="spacer" width="10" height="2" border="0"> <table border="0" cellpadding="0" cellspacing="1" width="100%" class="h3Row"> <td class="tabDetailViewDF" nowrap="nowrap" width="20%"><img src="themes/default/images/yellow_camp.gif" width='16' height='16' alt="" border="0" align="absmiddle" /> <a href=" <?php echo "./index.php?module=".$currentModule."&action=reportestimatecos t"; ?>"<?php echo $mod_strings['LBL_REPORT_ESTIMATE_COST']; ?> <td class="tabDetailViewDL" width="30%">  <?php $action_view_map = array( 'editview' => 'list', 'detailview' => 'list', 'reportestimatecost' =>'reportestimatecost', ); ?> CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 91 H nh 56: Màn h nh danh sách các report Các mẫu report dựa trên form mẫu đƣa ra sẽ đƣợc thiêt kế y hệt. Sau đó dùng các câu lệnh truy vấn để trích lọc dữ liệu hiển thị ra bên ngoài 4.6.1. Report estimate cost Report estimate cost sẽ hiển thị thông tin của dự án mà ngƣời sử dụng muốn xuất ra và các chi phí dự tính danh cho từng phòng ban, cũng nhƣ các phí khác nhƣ vé máy bay hoặc n uống…… Cách tạo report estimate cost bằng cách tạo view.reportestimatecost.php nằm trong đƣờng dẫn: custom/modules/C_Report/views/ Trong file này ngƣời phát triển sẽ dùng những thẻ HTML để tạo ra giao diện hiển thị cho report estimate cost, các thẻ HTML này sẽ đƣợc đặt trong biến result để hiển thị ra bên ngoài màn hình. CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 92 Hàm hiển thị màn hình của report estimate cost. function display(){ global $db, $mod_strings, $app_list_strings; global $timedate; $ss = new Sugar_Smarty(); C_Report::getProjectList(); $ss->assign('MOD', $mod_strings); $ss->assign('PROJECT_ID', get_select_options_with_id($app_list_strings['project_list'], $_REQUEST['project_id'])); $ss->assign('START_DATE', $_REQUEST['start_date']); $ss->assign('END_DATE', $_REQUEST['end_date']); $ss->assign('CALENDAR_DATEFORMAT', $timedate- >get_cal_date_format()); // if(isset($_REQUEST['submit'])){ if(isset($_REQUEST['submit'])){//fix bug 930 // $project_id = $_REQUEST['project_id']; $project_id = $_REQUEST['project_id'];//fix bug 930 $start_date = $_REQUEST['start_date']; $end_date = $_REQUEST['end_date']; $res = $this->processReport($project_id, $start_date, $end_date); $ss->assign('RESULT', $res); } $ss- >display("custom/modules/C_Report/tpls/reportestimatecost.tpl") ; } CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 93 Câu truy vấn để lấy danh sách các project Câu truy vấn để lấy danh sách các production cost estimation $query = 'SELECT a.name, a.job_code, a.start_date, a.end_date, c.name AS CLIENT, a.end_date, TRIM(CONCAT(IFNULL(d.first_name,"")," ",IFNULL(d.last_name," "))) AS full_name, c.industry FROM c_project a LEFT JOIN accounts_c_project_c b ON a.id = b.accounts_cba57project_idb AND b.deleted=0 LEFT JOIN accounts c ON c.id = b.accounts_cd932ccounts_ida AND c.deleted=0 LEFT JOIN users d ON d.id=a.assigned_user_id AND d.deleted=0 WHERE a.deleted=0 AND a.id="'.$project_id.'"'; $sql = 'SELECT a.name,a.amount FROM c_production_cost_estimation a JOIN c_project_ct_estimation_c b ON a.id=b.c_project_bdf7imation_idb AND b.deleted=0 AND b.c_project_8dd9project_ida="'.$project_id.'"'; CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 94 Câu truy vấn để lấy lên Manpower cost H nh 57: Màn h nh Report estimate cost $sql = ' SELECT a.name, a.projectshour, d.cost_per_hour, a.projectedminutes FROM c_estimatecost a JOIN c_project_cestimatecost_c b ON a.id = b.c_project_60aaatecost_idb AND b.deleted = 0 JOIN c_project e ON e.id = b.c_project_faf3project_ida AND e.id = "'.$project_id.'" JOIN c_derpartment d ON d.id = a.derpartment WHERE a.deleted = 0 AND b.deleted = 0 AND d.deleted = 0 '; CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 95 4.6.2. Report actual cost Report actual cost sẽ xuất ra các thông tin về dự án cũng nhƣ tính chi phí thực tế dành cho dự án đó. Cách tạo report actual cost cũng tƣơng tự nhƣ cách tạo report estimate cost. Ngƣời phát triển phải tạo một file view.reportactualcost.php và đặt vào đƣờng dẫn: custom/modules/C_Report/views. Đồnng thời trong file custom/modules/C_Report/action_view_map.php Khai báo thêm dòng “'reportactualcost' =>'reportactualcost',” Hàm hiển thị của report actual cost Trong hàm có: $ss- >display("custom/modules/C_Report/tpls/reportactualcost.tpl"); function display(){ global $db, $mod_strings, $app_list_strings; global $timedate; $ss = new Sugar_Smarty(); C_Report::getProjectList(); $ss->assign('MOD', $mod_strings); $ss->assign('PROJECT_ID', get_select_options_with_id($app_list_strings['project_list'], $_REQUEST['project_id'])); $ss->assign('START_DATE', $_REQUEST['start_date']); $ss->assign('END_DATE', $_REQUEST['end_date']); $ss->assign('CALENDAR_DATEFORMAT', $timedate- >get_cal_date_format()); // if(isset($_REQUEST['submit'])){ if(isset($_REQUEST['submit'])){ //fix bug 930 $project_id = $_REQUEST['project_id']; $start_date = $_REQUEST['start_date']; $end_date = $_REQUEST['end_date']; $res = $this->processReport($project_id, $start_date, $end_date); $ss->assign('RESULT', $res); } $ss- >display("custom/modules/C_Report/tpls/reportactualcost.tpl"); } CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 96 Trong hàm có dòng: $ss->display("custom/modules/C_Report/tpls/reportactualcost.tpl"); Dòng này dùng để hiển thị biến Sugar_Smarty bằng việc tạo giao diện trong file reportactualcost.tpl <form action="index.php" id="frmForm" name="frmForm" method="post"> <table cellpadding="0" cellspacing="0" width="100%" border="0" style="border-collapse: collapse;"> <input type="hidden" name="module" value="C_Report"/> <input type="hidden" name="action" value="reportactualcost" /> <h3 align="center" style="text-transform: uppercase;">{$MOD.LBL_REPORT_ACTUAL_COST} <td class="dataLabel">{$MOD.LBL_SELECT_PROJECT} <select name="project_id" id="project_id" size="1">{$PROJECT_ID}   <input type="submit" name="submit" id="submit" value="{$MOD.LBL_BUTTON_REPORT}"> {$RESULT} CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 97 Phần tpl này giúp hiện thị phần report actual cost Khi nhấp vào button report sẽ nhận đƣợc action đến action đƣợc khai báo trong file action_view_map.php . Câu truy vấn để lấy giờ làm thực tế của từng nhân viên {$RESULT} {$RESULT} $sql = 'SELECT a.name AS projects, g.project, l.name AS estimation, c.id, TRIM(CONCAT(IFNULL(c.first_name,"")," ",IFNULL(c.last_name," "))) AS full_name, e.name, g.hours, g.MONTH, l.projectshour, l.projectedminutes CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 98 LEFT JOIN users_c_derpartment_c d ON c.id = d.users_c_de398cntusers_ida AND d.deleted = 0 LEFT JOIN c_derpartment e ON e.id = d.users_c_ded6c3artment_idb AND e.deleted = 0 LEFT JOIN (SELECT f.id,u.last_name,p.name, p.name AS project,p.id AS pj, MAX(MONTH(f.apply_date)) AS MONTH, (SUM(f.hours)+SUM(f.minutes)/60) AS hours, f.assigned_user_id AS users FROM c_timesheets f INNER JOIN users u ON u.id = f.assigned_user_id INNER JOIN c_project_c_timesheets_c pt ON pt.c_project_abe0esheets_idb = f.id INNER JOIN c_project p ON p.id = pt.c_project_6c85project_ida WHERE f.deleted = 0 AND pt.deleted =0 AND p.deleted = 0 GROUP BY f.assigned_user_id,p.id) g ON g.users = c.id AND g.pj=a.id LEFT JOIN (SELECT h.c_project_faf3project_ida AS project, i.id, i.projectshour, i.projectedminutes, i.name, k.id AS depa FROM c_estimatecost i JOIN c_derpartmeestimatecost_c j ON i.id = j.c_derpartm96a0atecost_idb CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 99 Câu truy vấn để lấy các chi phí bên ngoài thực tế (Production cost actual) H nh 58: Màn h nh Report Actual cost AND j.deleted = 0 JOIN c_derpartment k ON k.id = j.c_derpartm5b51artment_ida AND k.deleted = 0 JOIN c_project_cestimatecost_c h ON i.id = h.c_project_60aaatecost_idb AND h.deleted = 0 WHERE i.deleted = 0) l ON l.project = a.id AND l.depa = e.id WHERE a.id = "'.$project_id.'" GROUP BY l.id,c.id ORDER BY e.name'; $sql = 'SELECT a.name,a.amount FROM c_production_cost a JOIN c_project_cduction_cost_c b ON b.c_project_d0c7on_cost_idb=a.id AND b.deleted= 0 AND b.c_project_37e0project_ida="'.$project_id.'"'; CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 100 4.7. Module Manpower Cost Module manpower cost đƣợc tạo theo cách thông thƣờng, bằng cách sử dụng module builder để tạo ra module C_Manpowercost gồm các field: Team, Project hour, Project minutes, và Description. Field project đƣợc tạo bằng cách tạo mối quan hệ n-1 với module project. Sau khi đã tạo xong các field và tiến hành deloy để đƣa module vào hệ thống. Ngƣời phát triển sẽ tiến hành các chỉnh sửa nhƣ: sẽ lấy danh sách các team ở module Teams gán vào danh sách dropdown của field team. Hàm lấy danh sách các team gán vào dropdown function getDepartment($project_id){ global $app_list_strings,$db; $sql =' SELECT DISTINCT a.id, a.name FROM c_derpartment a WHERE a.id NOT IN(SELECT c.derpartment FROM c_estimatecost c JOIN c_project_cestimatecost_c d ON c.id = d.c_project_60aaatecost_idb AND c.deleted = 0 AND d.deleted = 0 AND d.c_project_faf3project_ida = "'.$project_id.'") AND a.deleted = 0 '; $result = $db->query($sql); while($row = $db->fetchByAssoc($result)){ $app_list_strings['department_list'][$row['id']] = $row['name']; } } CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 101 Hàm để nối giờ với phút lại với nhau. Hàm để update name cho module manpower cost (bởi vì mỗi record đều cần có name để quản lý) 4.8. Đánh giá hệ thống Để có đƣợc cái nhìn tổng quan và chính xác hơn em đã thực hiện cuộc khảo sát các nhân viên bên công ty Red về các vấn đề hệ thống đang sử dụng hiện tại và đạt đƣợc kết quả khảo sát nhƣ sau: 1. Anh/chị đánh giá thế nào về mức độ dễ sử dụng của giao diện trang của hệ thống Red online timesheet ? (Lựa chọn tƣơng ứng 1: rất khó sử dụng, 4: rất dễ sử dụng) Trả lời Số lƣợng function concatHourAndMinute(&$bean,$event,$arguments){ global $db; $sql= "select projectshour from c_estimatecost where id='".$bean->id."' "; $result = $db->query($sql); $row = $db->fetchByAssoc($result); $bean->projectedminutes = $row[projectshour]." : ". $bean->projectedminutes; } function update_name(&$bean,$event,$arguments){ $department = new C_derpartment(); $department->retrieve($bean- >c_derpartm5b51artment_ida); $bean->name = $department->name; } CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 102 4 13 3 16 2 2 1 0 Tổng 31 2. Theo anh/chị hệ thống chạy có ổn định và đƣa ra đƣợc kết quả chính xác không? (Lựa chọn tƣơng ứng: 1 rất không chính xác, 4: rất chính xác) Trả lời Số lƣợng 4 16 3 12 2 3 1 1 Tổng 31 3. Anh/chị đánh giá nhƣ thế nào về tốc độ xử lý yêu cầu khi thực hiện các thao tác. (Lựa chọn tƣơng ứng 1: rất chậm, 4: rất nhanh) Trả lời Số lƣợng 4 18 3 10 2 3 1 0 Tổng 31 4. Anh/chị có thấy hệ thống hiện tại giải quyết đƣợc những vấn đề trƣớc đây anh/chị gặp phải không? (Lựa chọn tƣơng ứng 1:không tốt, 4: rất tốt) Trả lời Số lƣợng 4 20 3 10 2 1 1 0 Tổng 31 CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THỰC TẾ CHO RED Page 103 5. Anh/chị đánh giá thế nào về các dữ liệu cần lƣu trữ của hệ thống có đầy đủ không ? (Lựa chọn tƣơng ứng 1: không đầy đủ, 4: rất đầy đủ) Trả lời Số lƣợng 4 15 3 12 2 3 1 1 Tổng 31 Từ những kết quả trên ta có đƣợc biểu đồ khảo sát hệ thống nhƣ sau: Mức độ dễ sử dụng giao diện Tốc độ xử lý yêu cầu Hệ thống chạy ổn định và đưa ra kết quả c ính xác Giải quyết những vấn đề gặp phải trước đây Các dữ liệu cần lưu trữ của hệ thống 4 3 2 1 0 Biểu đồ trên cho thấy mức độ dễ sử dụng giao diện, cũng nhƣ tốc độ xử lý và kết quả mong muốn của hệ thống Red online timesheet là tƣơng đối tối. Tuy nhiên mức độ dễ sử dụng của giao diện chƣa đạt đƣợc nhƣ mong muốn. KẾT LUẬN Page 104 KẾT LUẬN Sau quá trình nghiên cứu tìm hiểu lý thuyết và xây dựng ứng dụng, em đã đạt đƣợc những kết quả sau:  Trình bày đƣợc những kiến thức về cấu trúc SugarCRM.  Triển khai phần mềm quản lý quan hệ khách hàng cho công ty Red áp dụng mã nguồn mở SugarCRM.  Hạn chế  Ứng dụng chạy khá chậm nếu máy không có cấu hình mạnh  Muốn thao tác rành đƣợc trên phần mềm phải đƣợc hƣớng dẫn kĩ.  Hƣớng phát triển  Cải tiến cách viết code và xử lý các câu truy vấn để t ng tốc độ xử lý của ứng dụng.  Thiết kế đơn giản hơn để ngƣời sử dụng có thể dễ dàng làm việc. TÀI LIỆU THAM KHẢO Page 105 TÀI LIỆU THAM KHẢO [1] John Mertic, The Definitive Guide To SugarCRM, USA,2009 [2] www.Sugarcrm.com, Sugar_CommunityEdition_Application_Guide_6.1.0.pdf,Version6.1.0, 31/05/2012. [3] oper_Guide_6.4 Truy cập ngày 15/04/2012 [4] 17.html, 10:00 ngày 15/03/2012 . PHỤ LỤC Page 106 PHỤ LỤC 1 1. Mục đích Tài liệu này hƣớng dẫn các bạn cài đặt phần mềm SugarCRM vào hệ thống của bạn 2. Yêu cầu hệ thống + Hệ điều hành: windows xp, windows server 2003/2008, windows 7, lilux + webserver: apache, IIS + Database: Mysql, SQL Server + Trình duyệt: Internet explorer 6,7,8,9/ firfox 2,3,4/ safari/ opera/ google chrome 3. Hƣớng dẫn cài đặt B1: Tải XAMPP về (bản .exe cho Win 32) và cài đặt lên server. Sau khi cài xong XAMPP tại ổ D, ta có đƣờng dẫn nhƣ sau: D:\xampp. Trong tài liệu này, ta dùng XAMPP phiên bản 1.6.7 xampp-win32-1.6.7-installer.exe) Địa chỉ tải XAMPP: B2: Cấu hình lại port cho apache server mục đích là tránh sự đụng độ port với các web server khác nhƣ IIS Thực hiện: Mở file D:/xampp/htdocs/apache/conf/httpd.conf Tìm đến #Listen 12.34.56.78:80 Listen 80 Và ServerName localhost:80 Thay bằng: #Listen 12.34.56.78:81 PHỤ LỤC Page 107 Listen 81 Và ServerName localhost:81 Với 81 là port mới cho Apache. B3:Cấu hình thƣ mục root cho apache: Mở file C:/xampp/htdocs/apache/conf/httpd.conf Tìm đến DocumentRoot "C:/xampp/htdocs" Thay bằng DocumentRoot "C:/xampp/htdocs/xxx" Với xxx là tên thƣ mục mới (nằm trong htdocs). Lúc này, nếu gõ trên trình duyệt thì thay vì chạy vào trang index.php của htdocs thì bây giờ sẽ chạy thẳng vào website xxx. Sau khi cài XAMPP và cấu hình XAMPP , kiểm tra dịch vụ Apache và MySQL đang chạy nhƣ hình bên dƣới: PHỤ LỤC Page 108 PHỤ LỤC Page 109 B4: chép source của phần mềm vào thƣ mục htdocs của XAMPP PHỤ LỤC Page 110 B5: tạo database MySQL cho phần mềm Mở PhpMyadmin lên: (81 là port Apache sau khi cấu hình xong) PHỤ LỤC Page 111 Sau đó import file script database vào database vừa tạo B6: cấu hình ứng dụng Vào đƣờng dẫn : D:\xampp\htdocs\sugarcrm PHỤ LỤC Page 112 Trong file config.php thay đổi giá trị cho các thành phần sau 'db_user_name' => 'root', ( tên ngƣời dùng database, mặc định là root) 'db_password' => '', ( mật khẩu truy cập vào database, mặc định là rỗng) 'db_name' => sugarcrm, ( tên database ) PHỤ LỤC Page 113 B7: truy cập vào ứng dụng Nếu các bƣớc cấu hình ở trên thực hiện xong và đúng thì khi truy cập địa chỉ: http:// localhost:81 sẽ xuất hiện hình bên dƣới PHỤ LỤC 2 PHIẾU KHẢO SÁT Kính chào anh/chị! Hiện tại chúng tôi đang thực hiện khóa luận tốt nghiệp với đề tài “Triển khai phần mềm quản lý quan hệ khách hàng” và đã xây dựng đƣợc hệ thống Red online timesheet, mọi ngƣời có thể truy cập vào trang (user: admin pass: 123456) Với mục tiêu xây dựng cũng nhƣ nâng cấp hệ thống đƣợc tốt hơn, rất mong nhận đƣợc sự hỗ trợ của các anh/chị bằng cách trả lời bảng khảo sát dƣới đây. Chân thành cảm ơn Ngƣời thực hiện đề tài: Mang Nhƣ Trung (Anh/Chị vui lòng khoanh tròn câu trả lời tƣơng ứng cho từng câu hỏi sau) PHỤ LỤC Page 114 1. Anh/chị đánh giá thế nào về mức độ dễ sử dụng của giao diện trang của hệ thống Red online timesheet ? (Lựa chọn tƣơng ứng 1: rất khó sử dụng, 4: rất dễ sử dụng) 1 2 3 4 2. Theo anh/chị hệ thống chạy có ổn định và đƣa ra đƣợc kết quả chính xác không? (Lựa chọn tƣơng ứng: 1 rất không chính xác, 4: rất chính xác) 1 2 3 4 3. Anh/chị đánh giá nhƣ thế nào về tốc độ xử lý yêu cầu khi thực hiện các thao tác. (Lựa chọn tƣơng ứng 1: rất chậm, 4: rất nhanh) 1 2 3 4 4. Anh/chị có thấy hệ thống hiện tại giải quyết đƣợc những vấn đề trƣớc đây anh/chị gặp phải không? (Lựa chọn tƣơng ứng 1:không tốt, 4: rất tốt) 1 2 3 4 5. Anh/chị đánh giá thế nào về các dữ liệu cần lƣu trữ của hệ thống có đầy đủ không ? (Lựa chọn tƣơng ứng 1: không đầy đủ, 4: rất đầy đủ) 1 2 3 4

Các file đính kèm theo tài liệu này:

  • pdfbao_cao_khoa_luan_tot_nghiep_trien_khai_crm_thuc_te_6803.pdf