Top Banner
ĐẠI HC BÁCH KHOA HÀ NI VIN CNTT & TT BÁO CÁO THC TP KTHUT CÔNG TY TRUE PLUS Đề tài: Xây dng modun Simple Affiliate cho magento Nguyễn Văn Bình 20101141 Người HD: A THoàng Hi Hà Ni 8/12/2013
27

Báo cáo cuối học phần

Oct 23, 2015

Download

Documents

TuyCuongSinh

Bao Cao Thuc Tap Ky Thuat
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Báo cáo cuối học phần

ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN CNTT & TT

BÁO CÁO THỰC TẬP KỸ THUẬT

CÔNG TY TRUE PLUS

Đề tài: Xây dựng modun Simple Affiliate cho magento

Nguyễn Văn Bình 20101141

Người HD: A Tạ Hoàng Hải

Hà Nội 8/12/2013

Page 2: Báo cáo cuối học phần

2

1 Mục lục 2 Lời cám ơn ......................................................................................................... 3

3 Giới thiệu về công ty .......................................................................................... 4

4 Quá trình thực tập .............................................................................................. 5

5 Cơ bản về magento............................................................................................. 6

5.1 Magento là gì? ............................................................................................... 6

5.2 Cấu trúc một module magento ...................................................................... 7

6 Các sản phẩm trong quá trình thực tập .............................................................. 9

6.1 Website bán hàng đơn giản ........................................................................... 9

6.2 Modun Emailmarketing ...............................................................................10

7 Module Simple Affiliate ..................................................................................12

7.1 Xây dựng backend .......................................................................................13

7.1.1 Manage Accounts...............................................................................13

7.1.2 Manage Transactions .........................................................................15

7.2 Xây dựng front end ......................................................................................17

7.2.1 Thông tin acccount .............................................................................17

7.2.2 Gửi email ............................................................................................18

7.2.3 Trang rút tiền ......................................................................................19

7.3 Xử lý các event ............................................................................................19

7.4 Cấu hình cho module ...................................................................................21

7.5 Demo giao diện và chức năng chính ...........................................................22

8 BẢNG ĐÁNH GIÁ KẾT QUẢ THỰC TẬP DOANH NGHIỆP ...................27

Page 3: Báo cáo cuối học phần

3

2 Lời cám ơn

Qua đợt thực tập vừa rồi giúp em có thêm nhiều kiến thức mới bổ ích, trau

dồi thêm kỹ năng làm việc nhóm cũng như được tiếp xúc và làm việc với môi

trường làm việc thực tế, giúp em tích lũy thêm kinh nghiệm làm việc

Em xin chân thành cảm ơn các thầy cô trong viện Công nghệ thông tin &

truyền thông đã tổ chức đợt thực tập bổ ích này

Em cũng xin gửi lời cảm ơn đến lãnh đạo công ty True Plus đã tạo điều

kiện,giúp đỡ,tạo ra môi trường cho chúng em có cơ hội làm việc cũng như học tập

trong điều kiện rất tốt.

Cuối cùng em xin gửi lời cám ơn đến các anh hướng dẫn trực tiếp ở công

ty,đã giúp đỡ,giải đáp thắc mắc, giúp em hoàn thành các công việc được công ty

giao

Page 4: Báo cáo cuối học phần

4

3 Giới thiệu về công ty

True PLus do người Việt trẻ thành lập và điều hành nhưng hoạt động trong môi

trường quốc tế. Các thành viên chủ chốt của công ty đều còn rất trẻ nhưng đầy

nhiệt huyết và khát khao chinh phục cái mới, mở rộng tầm nhìn và cần cù nỗ lực.

Đối tượng khách hàng chiến lược hiện nay hầu hết đều ở nước ngoài…

Những lĩnh vực sản phẩm mà True Plus tâm huyết phát triển, dồn hết đam mê và

hoài bão bao gồm:

- Cung câp giải pháp cho các hệ thống thương mại điện tử.

- Xây dựng hệ thống thương mại điện tử dựa trên Magento.

- Viết các extension cho Magento- một hệ thống mã nguồn mở rất chuyên

nghiệp dành cho E-Commerce.

- Giaytot.vn website bán giầy trực tuyến lớn nhất Việt Nam

- Himita.com web bán hàng handmade

Magento: Magento là một hệ thống thương mại điện tử giàu tính năng được

xây dựng trên nền tảng công nghệ Mã Nguồn Mỡ (OS) nhằm cung cấp cho thương

mại trực tuyến một khả năng linh hoạt chưa từng có cùng với việc kiểm soát giao

diện,nội dung, mở rộng chức năng cực kỳ thân thiện.Tương tác quản trị bằng hình

ảnh trực giác và đa site là sức mạnh nổi bật của magento.Việc Tối ưu hóa công cụ

tìm kiếm và quản trị thư mục uyển chuyển giúp cho magento có thể thích ứng với

bất kỳ nhu cầu,hình thức và mức độ của kinh doanh trực tuyến từ công việc kinh

doanh những mặt hàng đơn lẻ cho tới đa dạng hóa sản phẩm trên một site và nhiều

site.

Page 5: Báo cáo cuối học phần

5

4 Quá trình thực tập

19/6 – 6/6

Xây dựng website bán hàng đơn giản

7/6 – 14/6

Tìm hiểu và xây dựng frontend cho

modun Email marketing

15/6 – 21/6

Tìm hiểm và xây dựng backend trong

magento cho modun Email marketing

22/6 – 28/6

Tìm hiểu và xây dựng phần gửi Email

cho modun Email marketing

29/6 – 7/7

Tìm hiểu và viết các event giảm giá cho

Email marketing

8/7 – 14/7

Tìm hiểu check out và viết check out

cho modun Email Marketing

15/7 – 8/8

Xây dựng modun Simple Affiliate

Page 6: Báo cáo cuối học phần

6

5 Cơ bản về magento

5.1 Magento là gì? Magento là một mã nguồn mở, được ra đời ngày 31 tháng 3 năm 2008, được sáng

lập bởi Varien. Phát triển dựa trên nền tảng từ Zend Framework.

Magento dùng để phát triển xây dựng hệ thống website bán hàng với nhiều tính năng

ưu việt dựa trên mã nguồn mở (OS). Magento kế thừa các tính năng của những open

source về shopping cart trước nó, như Zen cart- oscommerce, cùng với những tính

năng vượt trội của nền tảng website 2.0. Vì vậy, theo các chuyên gia dự đoán

Magento chính là tương lai của kỷ nguyên Thương Mại Điện Tử.

Một số đặc điểm khiến magento trở thành mã nguồn mở dùng để xây dựng hệ thống

thương mại điện tử tốt nhất:

Về mặt tính năng magento có 1 số chức năng nổi bật mà 1 số mã nguồn mở khác

không có được đó là:

- Wishlists: Bạn có thể tạo ra danh sách sản phẩm yêu thích của mình và chia

sẻ với bạn bè.

- Multi store/mall feature: bạn có thể tạo ra nhiều cửa hàng, kho hàng, địa

điểm bán hàng khác nhau, cùng 1 sản phẩm nhưng có thể bán với giá khác

nhau ở mỗi cửa hàng.

- Email lists: Magento có 1 hệ thống danh sách các email, lọc, sắp xếp, giúp

cho việc marketing dễ dàng với tính năng ưu việt.

- Compare product: Tạo ra danh sách các sản phẩm dùng để so sánh.

- Bundle/Grouped/Digital products & more: Hệ thống có thể tạo ra các gói,

nhóm sản phẩm với thuộc tính cho từng loại.

- Layered/ Filter naviagation: Giúp người dùng có thể lọc, tìm kiếm theo 1 hay

nhiều thuộc tính của sản phẩm.

- Advanced searching: Giúp tìm kiếm nâng cao, tìm kiếm tùy chỉnh.

- Seo performance: Magento đã tích hợp SEO giúp tối ưu hóa với công cụ tìm

kiếm.

- CMS page: giúp người dùng tạo ra những trang laddingpage dễ dàng...

- Tích hợp google checkout.

- Bộ nhớ cache ….

- Cấu trúc thư mục rõ ràng: Magento được phát triển dựa trên nền tảng Zend

Framework với mô hình MVC, giúp bạn có thể quản lý phát triển hệ thống

dễ dàng, khi có sự update của các phiên bản mới.

Page 7: Báo cáo cuối học phần

7

5.2 Cấu trúc một module magento Các module của Magento được xây dựng theo mô hình MVC với đầy

đủ các thành phần: Controller, Model và View. Trong Magento, View bao

gồm Block, layout và các file template.

Controller: là thành phần tiếp nhận các request từ phía người dùng được gửi

đến Server thông qua browser. Controller yêu cầu View (Layout trong

Magento) render ra các đoạn mã HTML (bao gồm cả CSS và Javascript). Sau

đó trả về phía browser để hiển thị cho người dùng.

View: trong Magento, View bao gồm các Layout (định nghĩa bằng các file

XML), Block (các class PHP), và Template (các file .phtml). Layout có nhiệm

vụ render ra các đoạn mã HTML. Layout có thể lấy dữ liệu từ database thông

qua các Model Objects.

Model: trong Magento, Model bao gồm 2 thành phần: Object Model và

Resource Model. Trong đó, Object Model không làm việc trực tiếp với

database. Nó có nhiệm vụ lưu trữ dữ liệu tạm thời sau khi được lấy ra từ

Page 8: Báo cáo cuối học phần

8

database. Ngoài ra, nó cung cấp các operator function như get(), set(), load(),

delete(). Resource Model là thành phần làm việc trực tiếp với database. Sau

khi truy vấn database, dữ liệu sẽ được chuyển vào Object Model để lưu trữ

tạm thời.

Cấu trúc thư mục

Các module của Magento được lưu trữ trong 3 thư mục:

app/code/core: đây là thư mục chứa các module core của Magento

app/code/local : thư mục này chứa các module mất phí do các provider

phát triển.

app/code/community : thư mục này chứa các module miễn phí được

phát triển bởi cộng đồng Magento.

View

Controller

Model

Layout

Template

Page 9: Báo cáo cuối học phần

9

6 Các sản phẩm trong quá trình thực tập

6.1 Website bán hàng đơn giản Yêu cầu: Xây dựng website bán hàng đơn giản sử dụng Php & MySQL, có các

chức năng cơ bản như đăng ký,đăng nhập, tìm kiếm sản phẩm, thêm,sửa,xóa sản

phẩm, sắp xếp sản phẩm,liệt kê sản phẩm theo category….

Giao diện chính:

Page 10: Báo cáo cuối học phần

10

6.2 Modun Emailmarketing

Mô tả: Module cho phép các Account tạo và quản lý các group,các email trong

group của chính mình, và từ đó có thể gửi email đến cho bạn bè trong list contact

của mình, tạo event giảm giá cho sản phẩm, tạo invoice trong checkout

Giao diện

Page 11: Báo cáo cuối học phần

11

Page 12: Báo cáo cuối học phần

12

7 Module Simple Affiliate

Mô tả:

Affiliate là module cho phép các chủ store (cửa hàng) tạo ra mạng lưới giới

thiệu khách đến mua hàng thông qua các affiliates (người môi giới). Với mỗi order

(đơn hàng) thành công, affiliate sẽ nhận được 1 lượng commission (tiền “hoa

hồng”). Đồng thời, khách hàng mua đơn hàng đó có thể được nhận 1 lượng

discount (giảm giá). Affiliates thực hiện việc giới thiệu khách hàng thông qua việc

gửi email giới thiệu về store. Các link này có chứa thông tin về affiliate (có thể là

affiliate ID). Vì vậy khi khách hàng mua hàng sau khi đã click vào các link này,

module sẽ kiểm tra được thông tin affilaite và tạo ra các transaction (giao dịch). Từ

đó các affiliates sẽ nhận được commission.

Module Affiliate cung cấp các chức chính năng sau:

Quản lý affiliate account (thêm, sửa, xóa, upload ảnh)

Quản lý transaction (liệt kê, tìm kiếm)

Setting lượng commission/ disccount cho mỗi order mua hàng

Đăng ký làm affiliate

Cho phép affiliates kiểm tra danh sách các transaction, thống kê balance (số

tiền trong tài khoản)

Thiết kế Cơ sở dữ liệu :

Bảng simpleaffiliate_account gồm các field sau:

account_id: Id banner (int(11) unsigned, khóa chính)

customer_id: id của customer account (int(11) unsigned, khóa phụ trỏ đến

entity_id của bảng customer_entity)

firstname: (varchar 255)

lastname: (varchar 255)

email: (varchar 255)

balance: tổng số tiền hiện tại (decimal(12,4))

total_received: tổng số tiền commission nhận được (decimal(12,4))

joined: thời gian tạo account (datetime)

status: Disable/ Enable (tinyint(1))

Page 13: Báo cáo cuối học phần

13

Bảng simpleaffiliate_transaction gồm các field sau:

transaction_id: Id banner (int(11) unsigned, khóa chính)

order_id: increment id của order (bảng sales_flat_order) (int(11) unsigned)

affiliate_id: id account trong bảng simpleaffiliate_account (int(11) unsigned)

order_total: tổng giá trị đơn hàng (decimal(12,4))

commission: số tiền affiliate nhận được (decimal(12,4))

store: ID của store mà transaction được tạo ra (smallint(6))

created: thời gian tạo (datetime)

status: Complete/ Pending (tinyint(1))

7.1 Xây dựng backend

7.1.1 Manage Accounts Yêu cầu:

Thêm menu: Simple Affiliate/ Manage Accounts vào backend

Listing Accounts

Các action có thể thực hiện trên trang listing

Add Affiliate account: Thêm affiliate account

Search: Tìm kiếm affiliate theo ID, Name, Email, Balance, Total Received,

Status

Edit Account: Sửa thông tin account

Mass delete : Xóa thông tin nhiều account cùng lúc

Change Status: Thay đổi trạng thái nhiều account cùng lúc

Export dữ liệu account ra Csv/Xml file

Thực hiện:

Tạo block để hiển thị danh sách account

Magestore\Affiliate \Block/Adminhtml/Account.php

Magestore\Affiliate \Block/Adminhtml/Account/Grid.php

Tạo form để thêm account và sửa account tại file

- Magestore\Affiliate\Block\Adminhtml\Account\Edit\Tab\form

Page 14: Báo cáo cuối học phần

14

Giao diện account manager liệt kê danh sách account

Giao diện thêm Affiliate Account

Page 15: Báo cáo cuối học phần

15

Giao diện sửa thông tin một Affiliate Account

7.1.2 Manage Transactions Yêu cầu:

Thêm menu: Simple Affiliate/ Manage Transactions vào backend

Hiển thị danh sách các transaction (order mà các affiliates giới thiệu được), dữ liệu

cần hiển thị

Các action có thể thực hiện trên trang listing

Search: Tìm kiếm affiliate theo ID, Order Id, Affiliate Email, Order Total,

Commission, Store, Created, Status

Export dữ liệu transaction ra Csv/Xml file

Thực hiện:

Tạo Model/ Resource Model/ Collection để thao tác với bảng transaction

Tạo block để hiển thị danh sách account

Block/Adminhtml/Transaction.php

Block/Adminhtml/Transaction /Grid.php

Tạo form để thêm account và sửa account tại file

- Magestore\Affiliate\Block\Adminhtml\Transaction\Edit\Tab\form

Page 16: Báo cáo cuối học phần

16

Giao diện transaction manager

Page 17: Báo cáo cuối học phần

17

7.2 Xây dựng front end

7.2.1 Thông tin acccount Tạo trang hiển thị thông tin cá nhân của affiliate tại frontend hiển thị:

Name: Tên (Firstname + Lastname)

Balance: Số tiền trong tài khoản

Total Received: tổng số tiền commission nhận được

Form edit thông tin: First Name, Last Name, Email. Click nút Save sẽ lưu

thông tin vào database thông qua model Simpleaffiliate/Account và

Customer/Customer. Hiển thị thông báo lỗi/ thành công

Hàm xử lý lưu thông tin account tại AccountController :

public function saveAction() {

$firstname = '' . $this->getRequest()->getPost('firstname');

$lastname = '' . $this->getRequest()->getPost('lastname');

$email = '' . $this->getRequest()->getPost('email');

$id = '' . $this->getRequest()->getParam('id');

if ((isset($firstname) && ($firstname != null)) &&

(isset($email) && ($email != null)) && (isset($lastname) &&

($lastname != null)) && (isset($id) && ($id != null))) {

$affiliate = Mage::getModel('affiliate/account');

$affiliate->load($id)

->setData('firstname', $firstname)

->setData('lastname', $lastname)

->setData('email', $email);

$affiliate->save();

}

$this->_redirect('affiliate/account/index');

}

Page 18: Báo cáo cuối học phần

18

7.2.2 Gửi email Tạo form gửi email tại front end:

- Cho phép nhập nhiều email, ngăn cách nhau bởi dấu phẩy

- Nội dung email bất kì nhưng khi người nhận sẽ có link tới website để mua

hàng,khi mua hàng bằng đường link này,khách hàng sẽ được giảm giá và người gửi

sẽ được hưởng hoa hồng từ phiên mua hàng

Hàm xử lý gửi email tại IndexController:

public function sendemail(){

$templateId =

Mage::getStoreConfig('emailmarketting/general/template');

$mailSubject = 'HI this is a test mail.';

$name = $this->getNameSender();

$email = $this->getEmailSender();

$sender = array('name' => $name,

'email' => $email);

$message = $this->getData('message');

$datacontact =

Mage::getModel('emailmarketting/emailmarketting')->getCollection()-

>addFilter('group_id', $id_group);

foreach ($datacontact as $row){

$email_contact = $row->getData('email');

$name_contact = $row->getData('name');

$vars = Array(

'message' => $message,

'email_sender' => $email,

'name_contact' => $name_contact,

'url' => Mage::getUrl(),

'cookie' => Mage::getModel('core/cookie')-

>get('frontend')

Page 19: Báo cáo cuối học phần

19

);

$storeId = Mage::app()->getStore()->getId();

$translate = Mage::getSingleton('core/translate');

Mage::getModel('core/email_template')

->setTemplateSubject($mailSubject)

->sendTransactional($templateId, $sender, $email_contact,

$name_contact, $vars, $storeId);

$translate->setTranslateInline(true);

}

}

}

7.2.3 Trang rút tiền - Sẽ có 1 tab mới dưới tab Affiliate Transactions .

- Nội dung trong form gồm có 1 text để nhập số tiền và nút ấn rút tiền.

- Số tiền sẽ được chủ website gửi trực tiếp theo địa chỉ của affiliate hay qua thẻ

dùng để mua sản phẩm

7.3 Xử lý các event Để khi các khách hàng vào link gửi từ Affiliate mua hàng thì được giảm giá,chúng

ta sử dụng cơ chế phát event trong magento để giảm giá cho sản phẩm, để thực

hiện điều này trong module em đã sử dụng các event sau:

- catalog_product_collection_load_after()

- catalog_product_get_final_price()

- sales_order_place_after()

- controller_action_postdispatch_customer_account_logout()

Để sử dụng các event này thì cần phải khi báo trong file config.xml. Và viết

phương thức xử lý chúng ở file Magestore\Affiliate\Model\Observer.php

Một vài hàm xử lý event trong module:

Page 20: Báo cáo cuối học phần

20

public function productLoadAfter($observer){

$product_collection = $observer['collection'];

if(isset($_COOKIE['affiliate_id'])&&($_COOKIE['affiliate_id'] ==

Mage::getModel('affiliate/account')->load($_COOKIE['affiliate_id'])-

>getAccountId())){

foreach($product_collection as $item){

$price_pro= $item->getFinalPrice();

if(Mage::getStoreConfig('affiliate/general/discount_type') == 1){

$final_price = $price_pro -

($price_pro*Mage::getStoreConfig('affiliate/general/discount')/100);

}

else {

$final_price = $price_pro -

Mage::getStoreConfig('affiliate/general/discount')/100;

}

$item->setFinalPrice($final_price);

}

}

}

Page 21: Báo cáo cuối học phần

21

public function productGetFinalPrice($observer){

$item = $observer->getEvent()->getProduct();

if(isset($_COOKIE['affiliate_id'])&&($_COOKIE['affiliate_id'] ==

Mage::getModel('affiliate/account')->load($_COOKIE['affiliate_id'])-

>getAccountId())){

$price = $item->getFinalPrice();

if(Mage::getStoreConfig('affiliate/general/discount_type')

== 1){

$final_price = $price -

($price*Mage::getStoreConfig('affiliate/general/discount')/100);

}

else {

$final_price = $price -

Mage::getStoreConfig('affiliate/general/discount')/100;

}

$item->setFinalPrice($final_price);

}

}

7.4 Cấu hình cho module Phần cấu hình cho module tại Backend (Simple Affiliate/setting)

Enable: bật/ tắt module, dropdown (Yes/No)

Commission type: dropdown (Fixed/ Percent)

Commission value: text

Discount type: dropdown (Fixed/ Percent)

Discount value: text

Để viết phần này cần phải sửa file cấu hình module system.xml

Giao diện cấu hình

Page 22: Báo cáo cuối học phần

22

7.5 Demo giao diện và chức năng chính Trang thông tin Affiliate Account,Affiliate có thể chỉnh sửa thông tin của mình tại

trang này

Page 23: Báo cáo cuối học phần

23

Affiliate gửi email cho khách hàng,hệ thống sẽ tự động gửi kèm link đến trang web

Affiliate có thể share link của website lên facebook

Hộp thoại hiện ra để có thể share lên facebook

Page 24: Báo cáo cuối học phần

24

Khi khách hàng click vào link của Affiliate và mua hàng sẽ thấy được giảm giá

Page 25: Báo cáo cuối học phần

25

Giao diện đặt hàng

Giao diện checkout

Page 26: Báo cáo cuối học phần

26

Admin vào Oder trong back end tạo invoice cho đơn hàng

Sau khi Addmin tạo invoice cho đơn hàng thì tài khoản Affiliate sẽ được cộng tiền

hoa hồng

Khách hàng có thể rút tiền của mình tại đây, sau đó admin sẽ chuyển tiền vào tài

khoản của Affiliate

Page 27: Báo cáo cuối học phần

27

8 BẢNG ĐÁNH GIÁ KẾT QUẢ THỰC TẬP DOANH NGHIỆP

(Ngày thực hiện đánh giá:

Ngày.....tháng.....năm 2013)

Họ tên sinh viên

Tên công ty tiếp nhận

thực tập

Người phụ trách tại

công ty Email:

Đánh giá chung về

khóa thực tập (ý thức

của sinh viên khi tham

gia, các điểm đạt và

chưa đạt)

【Đánh giá kết quả thực tập】

(Điền ✔ vào ô tương ứng Kết quả đánh giá theo 5 mức độ)

Năng lực IT □ 1

□ 2

□ 3

□ 4

□ 5

Điểm đặc biệt xuất sắc

(nếu có)

Phương pháp làm việc □ 1

□ 2

□ 3

□ 4

□ 5

Điểm đặc biệt xuất sắc

(nếu có)

Năng lực nắm bắt

công việc □ 1

□ 2

□ 3

□ 4

□ 5

Điểm đặc biệt xuất sắc

(nếu có)

Năng lực quản lý □ 1

□ 2

□ 3

□ 4

□ 5

Điểm đặc biệt xuất sắc

(nếu có)

Năng lực tiếng Anh □ 1

□ 2

□ 3

□ 4

□ 5

Điểm đặc biệt xuất sắc

(nếu có)

Năng lực làm việc

nhóm □ 1

□ 2

□ 3

□ 4

□ 5

Điểm đặc biệt xuất sắc

(nếu có)

Tổng điểm

Điểm

Người đánh giá: