Luồng 4 · Chăm sóc sau bán — Tin nhắn, Đổi địa chỉ, In lại, Hoàn tiền

← Tổng quan
LUỒNG 4 · ĐỌC ~7 PHÚT

Chăm sóc sau bán — Tin nhắn, Đổi địa chỉ, In lại, Hoàn tiền

Bốn quy trình hậu mãi (sau khi đơn giao đến khách): (a) tin nhắn từ khách qua Etsy → đường email dự phòng (kênh chính cần Etsy duyệt quyền đọc tin nhắn — đang chờ); (b) yêu cầu đổi địa chỉ → wizard BA Lead duyệt qua FR-017 gate (đã có trong hệ thống — mô hình "Address Change Request" trong `etsy_integration`); (c) in lại nếu sản phẩm lỗi → tái sử dụng file thiết kế, đặt lại trạng thái "Chờ in"; (d) hoàn tiền & hoàn trả → hôm nay BA xử lý thủ công trên Etsy site + ghi chú vào trao đổi đơn, hệ thống tự động đang thiết kế (Story 4.8 — chưa khởi công).

Đang xây dựng 60% Hoàn tiền — trong thiết kế Nguồn: FLOW_HAU_MAI_VN · HUONG_DAN_HAU_MAI_VN

AAi làm gì — sơ đồ vai trò

Bốn luồng hậu mãi liên kết Marketing/BA/Shipping, Etsy, và hệ thống nền. Bảng dưới đọc từ trái qua phải: mỗi cột là một vai trò, mỗi hàng là một mốc trong 4 luồng chính.

Khách Etsy
BA Marketing
BA Lead
Hệ thống Odoo
1. Tin nhắn
Gửi tin hỏi tình trạng / lỗi sản phẩm qua Etsy
Email parser nhận + post vào chatter đơn
Cron Gmail 10 phút, khử trùng email — API chưa duyệt
2. Đổi địa chỉ
Yêu cầu sửa địa chỉ qua tin nhắn hoặc đơn hàng
Bấm wizard "Yêu cầu đổi địa chỉ" + điền địa chỉ mới
Duyệt qua form, áp địa chỉ (chỉ pre-production)
FR-017 gate: khoá sau trạng thái "Đang in"
3. In lại
Chuyển pipeline "In lại", tái sử dụng design file
Tạo phiếu MRP + đẩy tracking thứ hai lên Etsy
4. Hoàn tiền
Yêu cầu hoàn tiền qua tin nhắn
Refund thủ công trên Etsy site + note vào chatter
Duyệt quyết định + ghi log
Tự động hoá chờ Story 4.8 (P4-02)

BCác bước chi tiết (12 bước)

  1. 1
    Khách Etsy
    Gửi tin nhắn qua Etsy Messaging
    Khách hỏi tình trạng đơn, báo lỗi sản phẩm, hoặc yêu cầu đổi địa chỉ. Tin nhắn gửi qua inbox Etsy.
  2. 2
    Hệ thống · 10 phút
    Cron email parser nhận tin từ Etsy Gmail
    Mỗi 10 phút, cron chạy để kiểm tra email mới từ Etsy alias (vd. noreply@etsy.com). Hệ thống nhận diện email là tin khách (khác email báo đơn mới).
    Hệ thống: Email được ghi vào log; hôm nay phụ thuộc đường email vì API conversations_r chưa được Etsy duyệt (E1 — cần P1-MSG-SCOPE re-submit). Khi API hoạt động, sẽ có thêm cron Conversations API chạy song song, tự khử trùng lặp.
  3. 3
    Email Parser
    Liên kết tin nhắn với đơn theo Receipt ID
    Parser bóc nội dung email tìm Receipt ID. Nếu tìm thấy → post tin vào chatter của đơn tương ứng. Nếu không khớp → giữ trong Buffer 7 ngày để đối chiếu sau.
    Buffer workflow: tin orphaned sau 7 ngày → trạng thái "orphaned" để BA review hàng tuần. BA Marketing copy nội dung vào chatter đơn đúng (nếu tìm được).
  4. 4
    BA Marketing
    Đọc tin + trả lời từ chatter đơn
    Mở đơn → chatter → thấy tin từ buyer đã được post. BA đánh giá nội dung + bấm "Send message" để reply. Odoo gửi email ra qua mail server.
  5. 5
    BA Marketing
    Nếu khách yêu cầu đổi địa chỉ — bấm wizard
    Mở đơn → bấm nút "Yêu cầu đổi địa chỉ". Wizard hiển thị địa chỉ hiện tại + cho sửa từng trường. Điền địa chỉ mới + lý do (copy từ trao đổi đơn).
    Sau lưu: trường địa chỉ trên form bị khoá — BA Marketing không sửa trực tiếp được. Hệ thống tạo bản ghi yêu cầu đổi địa chỉ chờ duyệt.
    Mockup gốc: form chuẩn đơn hàng (sale.view_order_form @ addons/sale/views/sale_order_views.xml); wizard yêu cầu lấy từ etsy.address.change.request form view @ etsy_integration/views/etsy_address_change_request_views.xml.
  6. 6
    BA Lead
    Duyệt yêu cầu đổi địa chỉ
    Menu Vận hành → Address Change Requests. Mở yêu cầu mới → kiểm tra đơn còn ở giai đoạn cho phép hay không (FR-017 gate: chỉ pre-production). Bấm "Duyệt" hoặc "Từ chối".
    FR-017 guard: Nếu đơn đã ở trạng thái "Đang in" trở đi, nút Duyệt bị vô hiệu hoá + thông báo "Đơn đã in nhãn, không cho đổi". Chỉ pre-production (Chờ duyệt thiết kế, Chờ in, v.v.) mới cho đổi. Ràng buộc đã codified — xem `etsy.address.change.request._check_pipeline_state` (C-AC-001/002/003).
  7. 7
    Hệ thống
    Áp địa chỉ mới + ghi trao đổi đơn
    Nếu duyệt → địa chỉ mới được cập nhật vào đơn + trường mở khoá lại (`approve_address_change=True` trong context bypass lock). Trao đổi đơn tự ghi log: "BA Lead duyệt yêu cầu đổi địa chỉ từ BA Marketing — áp địa chỉ mới."
  8. 8
    BA Lead
    Nếu khách báo lỗi sản phẩm — mở wizard In lại
    Từ chatter, BA Lead bấm nút "Chuyển sang In lại" ở tab Pipeline. Wizard hỏi lý do — ghi chi tiết (vd. "Khách báo in mờ").
    Sau lưu: trạng thái pipeline từ (vd. "Hoàn tất") → "In lại" (trạng thái 16). Hệ thống lưu từng status change vào chatter với timestamp + user.
  9. 9
    Sản xuất
    Tạo phiếu MRP in mới
    Nhận thông báo qua chatter mention hoặc Pipeline Transitions. Tạo phiếu sản xuất MRP mới → chọn đơn gốc làm tham chiếu. Tái sử dụng file thiết kế cũ (tab Design Files có sẵn).
  10. 10
    BA Shipping · MTO hoặc Dropship
    Áp tracking in lại lên đơn
    MTO: in nhãn mới → nhập tracking mới qua wizard "Nhập tracking GKE". Dropship: bấm "Tạo phiếu Gearment in lại" — hệ thống tạo Gearment order mới, tracking mới về qua webhook sau khi Gearment in xong.
    Lịch sử tracking: hệ thống lưu cả tracking gốc lẫn tracking in lại trong tab Etsy → "Lịch sử tracking" của đơn gốc (không tạo bản ghi đơn mới).
  11. 11
    Hệ thống · nền
    Push tracking thứ hai lên Etsy
    Khi tracking mới được áp → hệ thống tự gọi Etsy push tracking API (cùng cơ chế đơn gốc). Etsy hiển thị 2 tracking trên cùng 1 receipt.
  12. 12
    BA Marketing · thủ công hôm nay
    Nếu khách yêu cầu hoàn tiền — refund qua Etsy + note chatter
    Hôm nay (v1 thủ công): BA Marketing mở Etsy Shop Manager → tìm receipt → bấm "Refund buyer" → điền số tiền + lý do. Quay lại Odoo → ghi note vào chatter đơn: "Refunded $X.XX qua Etsy ngày YYYY-MM-DD".
    Kế hoạch tự động (P4-02): model `etsy.order.ticket` theo dõi mỗi yêu cầu hậu mãi — ticket có loại (refund / return / reprint / other), workflow (open → in_progress → resolved). Sau khi resolved, ghi chi phí hoàn vào đơn → Dashboard Pricing Audit tính margin tự động.
    🟥 Hoàn tiền — trong thiết kế (Story 4.8, P4-02, Master Plan 007)

Màn hình Odoo trong luồng này

4 màn hình mô phỏng. Từ chatter tin nhắn buyer, wizard duyệt đổi địa chỉ, pipeline in lại, và placeholder refund (thiết kế).
Màn hình 1 · Chatter đơn hàng — Tin nhắn buyer tự động post
Vận hànhDashboard › Receipt #12345 · JaHandmadeArt marketing@hatafa
Đơn hàng#12345 · Coffee Mug Linen
Trạng thái đơn
Hoàn tất · Giao lại 2026-06-01
Khách
Sarah Miller · Milwaukee, WI
Tổng giá
$25.50
Chatter · 3 bình luận
Email Parser · 2 giờ trước
Buyer message: "Hi, I love the mug! But I realized I need XL size instead of Medium. Can I change my order?"
Từ email: noreply@etsy.com
BA Marketing · 1 giờ trước
Hi Sarah, thanks for the feedback! Let me help you change the size. I'll create a request for our approval team — you should hear back within 2 hours.
replied
BA Marketing mentioned #address-change-request
📝 Created address change request (from Medium → XL)
Chatter là phần chuẩn của Odoo trên mọi mô hình kế thừa mail.thread. Tin nhắn buyer được parser từ email Etsy tự động post vào chatter của đơn hàng tương ứng.
Mockup gốc: chatter chuẩn của Odoo (mail.thread mặc định trên sale.order); không có view tuỳ biến — email parser của etsy_integration tự post message vào chatter qua API.
Màn hình 2 · Wizard duyệt đổi địa chỉ — BA Lead approval gate
Vận hànhAddress Change Requests › #RC-001 ba.lead@hatafa
Duyệt yêu cầu đổi địa chỉ
Lưu ý: Đơn này đang ở trạng thái "Chờ duyệt thiết kế" — vẫn có thể đổi địa chỉ. Nếu đã chuyển sang "Đang in" trở đi thì không cho đổi (FR-017 lock).
Đơn gốc
#12345
Yêu cầu từ
BA Marketing · 1 giờ trước
Địa chỉ cũ
Sarah Miller
123 Main St, Apt 4B
Milwaukee, WI 53202, USA
Địa chỉ mới (đề xuất)
Sarah Miller
456 Oak Ave, Suite 12C
Milwaukee, WI 53205, USA
Lý do
Khách muốn giao đến nhà mới — đã dọn nhà tuần trước
BA Lead xem yêu cầu từ BA Marketing. Nếu đơn vẫn ở pre-production state, nút Duyệt sáng — bấm sẽ áp địa chỉ mới. Nếu đơn ở "Đang in" hay sau đó, nút bị vô hiệu + cảnh báo FR-017 lock. Sau duyệt, chatter tự ghi log.
Mockup gốc: form yêu cầu đổi địa chỉ tuỳ biến (etsy_integration.view_etsy_address_change_request_form @ etsy_integration/views/etsy_address_change_request_views.xml) trên mô hình etsy.address.change.request (constraints C-AC-001/002/003); modal là cách hiển thị standard của form trong Odoo.
Màn hình 3 · Pipeline tab — Chuyển sang In lại
Vận hànhDashboard › Receipt #12345 ba.lead@hatafa
Đơn hàng#12345Pipeline
Trạng thái hiện tại · Pipeline State
Hoàn tất
Pipeline states · Chuỗi trạng thái sản xuất
Chờ duyệt
Chờ in
Đang in
Hoàn tất
Giao đối tác
State transition history: Hoàn tất → In lại (2026-06-01 14:22 BA Lead)
Design Files · Giữ nguyên
design-coffee-mug-v1.pdf — approved 2026-05-28, không đổi khi in lại
Sau khi bấm "Chuyển sang In lại", wizard hỏi lý do (ghi vào chatter). Pipeline state chuyển từ "Hoàn tất" về "Chờ in" (reset). Design Files giữ nguyên — sản xuất tái sử dụng file cũ. Chatter ghi log transition với timestamp + user.
Mockup gốc: form đơn hàng chuẩn (sale.view_order_form) + tab Pipeline tuỳ biến @ multichannel_hub_core/views/sale_order_form.xml; reset trạng thái về "Chờ in" là action method trên sale.order.
Màn hình 4 · Placeholder refund — Story 4.8 etsy.order.ticket (design)
Vận hànhTickets › New ba.marketing@hatafa
Trong thiết kế
Story 4.8 · etsy.order.ticket model
Hôm nay BA Lead refund thủ công trên Etsy site và viết note vào chatter
Hôm nay (v1 thủ công): BA Marketing refund qua Etsy Shop Manager + ghi note vào chatter Odoo. Kế hoạch (P4-02): model `etsy.order.ticket` để theo dõi hoàn tiền / hoàn trả. Loại: refund, return, reprint, other. Workflow: open → in_progress → resolved. Khi resolved, ghi chi phí vào đơn → Dashboard Pricing Audit tính margin tự động.

CTiêu chí thành công

DLiên kết với các luồng khác

ELưu ý và câu hỏi mở

Conversations API chưa được duyệt: E1 — Etsy chưa duyệt scope `conversations_r` (P1-MSG-SCOPE cần re-submit). Hôm nay phụ thuộc đường email parser; khi API hoạt động, sẽ có cron Conversations chạy song song, tự khử trùng lặp theo `etsy.message.dedupe`.

FR-017 lock trên đổi địa chỉ: Hệ thống chỉ cho phép đổi địa chỉ ở các trạng thái pre-production (≤ "Chờ in"). Sau khi in nhãn (state ≥ "Đang in"), không cho đổi. BA Marketing phải giải thích cho khách: đơn đã giao bưu tá, không thể đổi — xử lý qua hoàn trả nếu cần. Cơ chế lock được codified trong mô hình `etsy.address.change.request` (C-AC-001/002/003) — xem `etsy_integration/models/etsy_address_change_request.py`.

Story 4.8 etsy.order.ticket — chưa code: Hôm nay (v1) hoàn tiền + hoàn trả là quy trình thủ công. Model `etsy.order.ticket` sẽ theo dõi mỗi yêu cầu (loại, trạng thái, chi phí). Nằm trong P4-02, Master Plan 007.

Tin nhắn buffer quá nhiều "orphaned": Nếu parser yếu và không khớp được Receipt ID, có thể tin nằm buffer lâu. BA Marketing review hàng tuần → copy nội dung vào chatter đơn đúng hoặc đánh dấu `discarded` nếu spam.