Kinh nghiệm lập trình website mã nguồn mở PHP

Quản lý đơn hàng Magento 2

Xin chào các bạn, tiếp nối loạt bài học Magento 2, chương 2 – quản lý, cấu hình. Hôm nay chúng ta sẽ tìm hiểu 1 phần vô cùng quan trọng trong hệ thống website Thương Mại Điện Tử (TMDT), đó chính là Quản lý đơn hàng Magento 2, order management system, luồng xử lý của order, shipment, invoice hay còn gọi với khái niệm “Fulfillment Process”


Luồng xử lý Order

Order (đơn hàng) chứa thông tin về đơn đặt hàng, thông tin khách hàng, địa chỉ vận chuyển, phương thức thanh toán…


1. Khách hàng vào đặt hàng (place order), sẽ có 1 order được tạo ra trong hệ thống và hiển thị ở danh sách Order trong phần quản lý backend.
2. Tới bước 2 tùy theo phương thức thanh toán mà luổng xử lý sẽ khác nhau:
– Nếu khách hàng chọn phương thức thanh toán là chuyển tiền sau (COD) thì đơn hàng sẽ có trạng thái là Pending, chờ admin vào kiểm tra thông tin khách hàng, địa chỉ. Sau đó admin sẽ tạo Shipment (giao hàng), status order lúc này là Processing. Sau khi món hàng tới tay người dùng, thanh toán tiền xong, admin sẽ tạo invoice (hóa đơn), lúc này hóa đơn sẽ hoàn tất, status order là Completed. – Nếu khách hàng chọn thanh toán online qua thẻ, thì cổng thanh toán sẽ làm nhiệm vụ xác thực thông tin, tiến hành giao dịch. Sau khi kết quả từ cổng thanh toán trả về hệ thống thành công, Invoice có thể sẽ được tạo tự động (tùy theo hệ thống), status là Processing. Admin tạo shipment và order status là Completed.

Payment Actions
Tùy theo phương thức thanh toán của khách hàng mà Đơn Hàng sẽ được xử lý phú hợp:

PAYMENT ACTIONDESCRIPTION
Capture OnlineKhi tạo hóa đơn (invoice), hệ thống Magento sẽ ghi nhận thanh toán (capture) từ hệ thống thứ 3 (payment gateway). Do đó Admin có khả năng hủy bỏ hóa đơn (void the invoice) trong phần quản trị.
Capture OfflineKhi tạo hóa đơn (invoice), hệ thống Magento không ghi nhận thanh toán (capture), quá trình thanh toán sẽ thực hiện trực tiếp, do đó admin không có chức năng hủy bỏ hóa đơn. Ví dụ cho trường hợp này là phương thức Chuyển khoản ngân hàng (Bank transfer), thanh toán trước tại cửa hàng.

State và status

Mỗi đơn hàng đều có 2 thuộc tính là State và Status.
Chỉ có status được hiển thị ra ngoài phần giao diện, ví dụ như theo mô hình bên trên thì ta sẽ thấy được 1 Order có các status: Pending, Processing, Completed, Canceled.
Còn state thì để làm gì? Thực chất, hệ thống Magento nhận biết trạng thái của Đơn Hàng thông qua state, ta có bảng mapping giữa state và status của Magento default như sau:

  Hỏi: theo anh nói thì Order có state và status. State dùng để cho Magento sử dụng, còn Status để hiển thị ra ngoài cho Customer và Admin xem, phần mapping giữa 2 cái này cũng khá giống nhau, vậy mục đích chính khi sinh ra 2 cái này làm gì? Sao không dùng 1 cái State thôi?
  Đáp: Đây chính là sự linh hoạt của Magento, Magento biết rằng trạng thái đơn hàng cần tùy biến theo nhu cầu của doanh nghiệp. Tuy nhiên phải thêm như thế nào để không làm thay đổi luồng xử lý của hệ thống.
Magento xử lý order thông qua state, do đó bạn không thể thêm mới hay sửa lại các order state, giả sử hệ thống của bạn quản lý order 2 cấp, nhân viên duyệt xong, sẽ chuyển lại cho sếp, sếp vào duyệt rồi mới xử lý tiếp, về bản chất thì state của order là processing nhưng ta có thể tạo 2 status: Staff confirmed, Boss confirmed, sau đó gán 2 status này vào 1 state là processing. Tương tự như vậy, state là Pending thì pending cái gì, Processing thì tới bước nào… Cứ tạo status tương ứng. Làm thể này vừa dễ quản lý theo nhu cầu công ty bạn, mà lại không ảnh hưởng tới hệ thống Magento.
Bạn có thể vào Stores > Settings > Order status để thêm status và gán vào state.

Edit Order
Khi Order có status Pending hoặc Processing, admin có thể edit order, tuy nhiên order này sẽ được đổi status thành Canceled, và 1 order mới sinh ra để cập nhật những thay đổi, 2 order này sẽ được liên kết với nhau.
Order Completed
1 order là completed khi nó được tạo Invoice và Ship.

Invoice

Invoice (hóa đơn) là 1 bản ghi nhận tiền thanh toán cho hóa đơn đã hoàn tất.

  • Khi tạo invoice ta có thể tạo đồng thời Shipment.
  • Ta có thể invoice 1 phần hóa đơn, gọi là Partial Invoice.

Như phần trên đã trình bày, invoice được tạo trước shipment khi người dùng chọn phương thức thanh toán online qua Credit Card, nếu chọn phương thức thanh toán sau thì shipment được tạo trước Invoice.

Return – EE

Phiên bản thu phí Enterprice Edition có thêm chức năng Return (trả hàng)
Những loại hàng hóa được phép trả lại:

Mục lục loạt bài Magento 2

Quản lý đơn hàng Magento 2
Đánh giá bài viết

2 phản hồi

Gửi phản hồi

Your email address will not be published. Required fields are marked *