Từ lúc khách Etsy bấm mua đến lúc đơn vào hệ thống quản lý Odoo. Khách đặt trên Etsy, hệ thống tự động lấy đơn mỗi 5 phút qua API (hoặc mỗi 10 phút đọc email khi đang chạy chế độ dự phòng). Sau khi nhận đơn + ghi nhật ký, hệ thống tự đối chiếu khách theo email — đúng 1 khách: tự tạo; 0 hoặc nhiều hơn 1: BA duyệt. Cuối cùng tạo đơn hàng với trạng thái "Mới nhận" và định tuyến theo sản phẩm (MTO in nội bộ hoặc Dropship Gearment).
Luồng tiếp nhận đơn liên kết 5 vai trò: khách Etsy, Etsy API, hệ thống Odoo, BA, Marketing. 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 chính.
etsy_integration.cron_etsy_order_sync) chạy cứ 5 phút = 288 lần/ngày. Công suất: 50-100 đơn/ngày với thời gian lấy đơn ≤ 4.3 giây.| Thời gian | Order # | Etsy receipt_id | Khách hàng | Tổng tiền | Pipeline state | Đến lúc |
|---|---|---|---|---|---|---|
| 14:03 | SO-2026-0445 | 3094521… | Jane Smith | $45.50 | Mới nhận | 3 giờ |
| 13:42 | SO-2026-0444 | 3094502… | John Doe | $28.00 | Mới nhận | 3 giờ 20 phút |
| 12:15 | SO-2026-0443 | 3094488… | Alice Johnson | $62.99 | Đã xác nhận | 4 giờ 48 phút |
| 11:30 | SO-2026-0442 | 3094471… | Bob Wilson | $33.75 | Đang sản xuất | 5 giờ 33 phút |
| 10:05 | SO-2026-0441 | 3094452… | Emma Brown | $51.20 | Sẵn sàng giao | 6 giờ 58 phút |
| 09:47 | SO-2026-0440 | 3094431… | Michael Chen | $19.99 | Đã giao | 7 giờ 16 phút |
mhc.operations_dashboard_list_view @ multichannel_hub_core/views/operations_dashboard_views.xml) — dựng trên sale.order.line với 34 cột lấy từ Excel "Esty main 2 - 15h VN.xlsx" (P1-01b). KPI ở trên cùng là phần thêm bên ngoài standard list view.sale.view_order_form @ addons/sale/views/sale_order_views.xml); chỗ khác biệt: tab "Etsy" mở rộng + các trường receipt_id / payment_status / shipping_address / etsy_last_modified trong etsy_integration/views/sale_order_views.xml.| Thời gian | Shop | HTTP | Endpoint | Kết quả | Ghi chú |
|---|---|---|---|---|---|
| 2026-06-03 14:03 | JaHandmadeArt | 200 | /shops/60752333/orders | success | 14 đơn, 4.3s |
| 2026-06-03 13:58 | JaHandmadeArt | 200 | /shops/60752333/orders | success | 0 đơn (no changes), 0.8s |
| 2026-06-03 13:53 | JaHandmadeArt | 200 | /shops/60752333/orders | success | 2 đơn, 1.2s |
| 2026-06-03 13:48 | JaHandmadeArt | 429 | /shops/60752333/orders | rate_limit | Etsy rate limit exceeded (retry 60s) |
| 2026-06-03 13:43 | JaHandmadeArt | 200 | /shops/60752333/orders | success | 5 đơn, 2.1s |
| 2026-06-03 13:38 | JaHandmadeArt | 200 | /shops/60752333/orders | success | 1 đơn, 0.9s |
| 2026-06-03 13:33 | JaHandmadeArt | 500 | /shops/60752333/orders | server_error | Etsy server error — API tạm down |
| 2026-06-03 13:28 | JaHandmadeArt | 200 | /shops/60752333/orders | success | 3 đơn, 1.5s |
etsy_integration.view_etsy_api_log_tree / view_etsy_api_log_search @ etsy_integration/views/etsy_api_log_views.xml) — không có view chuẩn Odoo cho nhật ký API; đây là mô hình tuỳ biến cho Etsy.| Email date | Subject | Parsed | Sale.order tạo | Note |
|---|---|---|---|---|
| 2026-05-15 11:23 | New order from JaHandmadeArt | yes | SO-2026-0382 | parsed via email, 2 items |
| 2026-05-14 09:47 | New order from JaHandmadeArt | failed | — | ký tự lạ trong tên khách (emoji) — đợi parser update |
| 2026-05-13 14:15 | New order from JaHandmadeArt | yes | SO-2026-0378 | parsed via email, 1 item |
| 2026-05-12 16:33 | New order from JaHandmadeArt | duplicate | — | đơn đã tạo trước đó qua API, email this là resend từ Etsy |
| 2026-05-11 10:05 | New order from JaHandmadeArt | yes | SO-2026-0375 | parsed via email, 3 items, cá nhân hoá đầy đủ |
etsy_integration/views/etsy_email_log_views.xml — không có view chuẩn Odoo; mô hình email-fallback chuyên biệt cho Etsy (kích hoạt khi API hỏng 3 lần liền).Hai con đường vào hệ thống: JaHandmadeArt đã chuyển sang API (chính thức 2026-05-12); 18 shop còn lại vẫn dùng email parser. Lộ trình P1-13 sẽ cutover shop thứ hai vào API vào tuần W7. Email parser vẫn chạy như fallback — khi API hỏng 3 lần liền, hệ thống tự chuyển sang email 10 phút một lần cho đến khi API fix.
Etsy shop_id là số thực, không phải Odoo PK: JaHandmadeArt có etsy_api_shop_id = 60752333 (Etsy gán). Trước đó dùng Odoo ID (Sandbox test) nhưng đã deprecated. Tất cả URL /shops/{shop_id}/* phải dùng etsy_api_shop_id, không dùng Odoo record ID.
Etsy app scope approved cho 4 scopes: transactions_r/w (đọc-ghi đơn), listings_r/w (đọc-ghi sản phẩm), shops_r (đọc info shop), email_r (đọc email báo đơn). Scope conversations_r (buyer messaging) chưa approved — cần re-submit với Etsy khi feature buyer-msg phát triển.