xforge · tài liệu FE

FE: module gift_card — thẻ quà #

Phần chung (khởi tạo client, lỗi, danh sách, ngôn ngữ) ở tài liệu FE của Core: docs/fe/common.md (bản đọc: xforge-documentation, ADR-0102 của xforge-core). Sửa file này CÙNG PR khi đổi hành vi FE thấy được của module.

CMS / admin (XforgeClient) #

Menu: key gift_card.gift_cards (quyền gift_card.read). Route CRUD chuẩn, không thùng rác: listGiftCards, getGiftCard, createGiftCard, updateGiftCard, deleteGiftCard, listGiftCardOptions; thêm adjustGiftCard, listGiftCardTransactions, refundOrderToGiftCard và listGiftCardOrderRefundables.

FieldGhi chú
codeVắng khi tạo = server sinh 16 ký tự. Tự đặt: 12–32 chữ / số (đếm sau khi bỏ gạch / khoảng trắng); lưu CHỮ HOA, bỏ khoảng trắng / gạch
amountMệnh giá (chỉ khi tạo), chuỗi tiền; làm tròn theo tiền tệ rồi phải > 0 (0.4 VND tròn về 0 → 400 validation_failed); tiền tệ là của store
balanceSố dư hiện tại (chỉ đọc); đổi qua adjustGiftCard hoặc đơn hàng
expiresAtMốc thời gian ISO UTC; null = không hết hạn
activefalse = tạm khoá thẻ (giỏ / chốt đơn từ chối)

Hoàn phần thẻ của đơn về lại thẻ #

refundOrderToGiftCard hoàn riêng phần đơn đã trả bằng thẻ, nhân viên quyết số tiền. createRefund (module refund) chỉ hoàn tiền mặt / chuyển khoản, hệ thống KHÔNG tự chia một lần hoàn giữa tiền và thẻ. Màn chi tiết đơn:

  1. listGiftCardOrderRefundables({ query: { order_id } }) (quyền gift_card.read): mỗi thẻ đã trả cho đơn một dòng giftCardId, giftCardInfo (code luôn che, currency, balance, active), redeemed, released, refundable. Danh sách rỗng = đơn không trả bằng thẻ, ẩn nút. refundable là "0" thì tắt nút (đơn chưa trả xong, đã hoàn hết hoặc đã huỷ).
  2. refundOrderToGiftCard({ body: { orderId, giftCardId, amount, reason? } }) (quyền gift_card.adjust). amount làm tròn theo tiền tệ, tối đa refundable. Response là dòng ở bước 1 đã cập nhật, kèm orderId, orderInfo, amount (số vừa hoàn). reason lưu vào note của dòng sổ release.

Đơn huỷ sau đó chỉ trả về thẻ phần còn lại; đơn đã huỷ thì refundable là "0". Hoàn về thẻ KHÔNG đổi status / paymentStatus của đơn. Thẻ đang tắt / hết hạn vẫn nhận lại tiền.

codeStatusFE nên
gift_card_refund_exceeds409tải lại refundable, hiện details.available
gift_card_refund_order_not_paid409đơn chưa trả xong: huỷ đơn để trả thẻ (details.paymentStatus)
gift_card_order_not_found404đơn không thuộc store
gift_card_not_found404thẻ không thuộc store

Storefront #

Không có route riêng: khách nhập mã thẻ vào giỏ như mã giảm giá (setMyCartCodes, trang module cart); được nhập nhiều thẻ. Thẻ trả phần còn lại của đơn SAU giảm giá, thuế và phí giao: giỏ và đơn có khoản trong adjustments (source: "gift_card", scope: "offset") và totals.offsetTotal. code của khoản này đã bị che (****ABCD) ở giỏ, báo giá và đơn — mã đủ chỉ còn trong codes của giỏ (của chính khách).

Nguồn: xforge-modules: modules/sales/gift_card/FE.md