Bläddra i källkod

结账页添加giftcard; 购物车和订单详情里添加礼品卡和vipplus相关字段

fogwind 4 dagar sedan
förälder
incheckning
4520bb050e

+ 4 - 0
src/app/(checkout)/checkout/_components/ContinueToPay/ContinueToPayOrderInfo.tsx

@@ -172,6 +172,10 @@ export default function ContinueToPayOrderInfo({
                     <p className="text-ly-12 leading-ly-20">Discount</p>
                     <p className="text-ly-12 leading-ly-20">{currencySymbol}{orderDetail.discountAmount}</p>
                 </div>
+                <div className="flex justify-between mt-3 first:mt-0">
+                    <p className="text-ly-12 leading-ly-20">Gift Card</p>
+                    <p className="text-ly-12 leading-ly-20">-{currencySymbol}{orderDetail.giftcardAmount}</p>
+                </div>
                 {/* <div className="flex justify-between mt-3 first:mt-0">
                     <p className="text-ly-12 leading-ly-20">You Earn</p>
                     <p className="text-ly-12 leading-ly-20">600 Reward Points</p>

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 176 - 0
src/app/(checkout)/checkout/_components/GiftCard/CheckoutGiftCardGate.tsx


+ 23 - 4
src/app/(checkout)/checkout/_components/PromotionsDetails.tsx

@@ -1,15 +1,34 @@
 "use client";
 
-
+import { CartDetail } from "@/types/cart/type";
 
 
 // 金额明细
-export default function PromotionsDetails() { 
+export default function PromotionsDetails({cartData}:{
+    cartData: CartDetail
+}) { 
 
 
     return (
-        <div className="">
-
+        <div className="w-full box-border">
+            <ul className="w-full">
+                <li className="flex justify-between items-center text-ly-12 mt-4 first:mt-0">
+                    <span>Subtotal</span>
+                    <span>{cartData.formattedSubtotal}</span>
+                </li>
+                <li className="flex justify-between items-center text-ly-12 mt-4 first:mt-0">
+                    <span>Shipping Method</span>
+                    <span>{cartData.formattedShippingAmount}</span>
+                </li>
+                <li className="flex justify-between items-center text-ly-12 mt-4 first:mt-0">
+                    <span>Gift Card</span>
+                    <span className="flex items-center flex-none h-6 bg-ly-gold px-2 text-ly-14">-{cartData.formattedGiftcardAmount}</span>
+                </li>
+                <li className="flex justify-between items-center text-ly-12 mt-4 first:mt-0">
+                    <span>Grand Total</span>
+                    <span>{cartData.formattedGrandTotal}</span>
+                </li>
+            </ul>
         </div>
     );
 }

+ 7 - 1
src/app/(public)/paymentresult/_components/OrderDetailWrapper.tsx

@@ -9,7 +9,9 @@ import { useConfig } from "@utils/hooks/useConfig";
 import {getAddressFromOrderDetailAddressList} from "@/utils/orderDetailTools";
 import Faqs from "./Faqs";
 
-
+/**
+ * 订单详情里的金额的货币符号不会根据用户选择的货币改变 ,而是固定为下单时使用的货币
+ */
 
 function getProductAdditionalInfo(productItem: ProductItemAdditional) { 
     const attributeKeys = Object.keys(productItem.attributes);
@@ -186,6 +188,10 @@ export default function OrderDetailWrapper({
                     <p className="text-ly-12 leading-ly-20">Discount</p>
                     <p className="text-ly-12 leading-ly-20">{currency && currency.symbol}{orderDetailRes?.discountAmount}</p>
                 </div>
+                <div className="flex justify-between mt-3 first:mt-0">
+                    <p className="text-ly-12 leading-ly-20">Gift Card</p>
+                    <p className="text-ly-12 leading-ly-20">-{currency && currency.symbol}{orderDetailRes?.giftcardAmount}</p>
+                </div>
                 {/* <div className="flex justify-between mt-3 first:mt-0">
                     <p className="text-ly-12 leading-ly-20">You Earn</p>
                     <p className="text-ly-12 leading-ly-20">600 Reward Points</p>

+ 8 - 0
src/graphql/cart/mutations/AddProductToCart.ts

@@ -41,9 +41,15 @@ export const CREATE_ADD_PRODUCT_IN_CART: TypedDocumentNode<AddToCartData> = gql`
             }
           }
         }
+        isVip
+        vipDiscountAmount
+        formattedVipDiscountAmount
+        giftcardNumber
         subtotal
         subTotalInclTax
         discountAmount
+        giftcardAmount
+        vipPlusAmount
         taxAmount
         taxTotal
         shippingAmount
@@ -51,7 +57,9 @@ export const CREATE_ADD_PRODUCT_IN_CART: TypedDocumentNode<AddToCartData> = gql`
         grandTotal
         formattedSubtotal
         formattedSubTotalInclTax
+        formattedGiftcardAmount
         formattedDiscountAmount
+        formattedVipPlusAmount
         formattedTaxAmount
         formattedTaxTotal
         formattedShippingAmount

+ 8 - 0
src/graphql/cart/mutations/CreateMergeCart.ts

@@ -33,9 +33,15 @@ export const CREATE_MERGE_CART: TypedDocumentNode<CreateMergeCartData> = gql`
             }
           }
         }
+        isVip
+        vipDiscountAmount
+        formattedVipDiscountAmount
+        giftcardNumber
         subtotal
         subTotalInclTax
         discountAmount
+        giftcardAmount
+        vipPlusAmount
         taxAmount
         taxTotal
         shippingAmount
@@ -43,7 +49,9 @@ export const CREATE_MERGE_CART: TypedDocumentNode<CreateMergeCartData> = gql`
         grandTotal
         formattedSubtotal
         formattedSubTotalInclTax
+        formattedGiftcardAmount
         formattedDiscountAmount
+        formattedVipPlusAmount
         formattedTaxAmount
         formattedTaxTotal
         formattedShippingAmount

+ 8 - 0
src/graphql/cart/mutations/GetCartItem.ts

@@ -27,9 +27,15 @@ export const GET_CART_ITEM: TypedDocumentNode<GetCartItemData> = gql`
             }
           }
         }
+        isVip
+        vipDiscountAmount
+        formattedVipDiscountAmount
+        giftcardNumber
         subtotal
         subTotalInclTax
         discountAmount
+        giftcardAmount
+        vipPlusAmount
         taxAmount
         taxTotal
         shippingAmount
@@ -37,7 +43,9 @@ export const GET_CART_ITEM: TypedDocumentNode<GetCartItemData> = gql`
         grandTotal
         formattedSubtotal
         formattedSubTotalInclTax
+        formattedGiftcardAmount
         formattedDiscountAmount
+        formattedVipPlusAmount
         formattedTaxAmount
         formattedTaxTotal
         formattedShippingAmount

+ 8 - 0
src/graphql/cart/mutations/RemoveCartItem.ts

@@ -27,9 +27,15 @@ export const REMOVE_CART_ITEM: TypedDocumentNode<RemoveCartItemData> = gql`
             }
           }
         }
+        isVip
+        vipDiscountAmount
+        formattedVipDiscountAmount
+        giftcardNumber
         subtotal
         subTotalInclTax
         discountAmount
+        giftcardAmount
+        vipPlusAmount
         taxAmount
         taxTotal
         shippingAmount
@@ -37,7 +43,9 @@ export const REMOVE_CART_ITEM: TypedDocumentNode<RemoveCartItemData> = gql`
         grandTotal
         formattedSubtotal
         formattedSubTotalInclTax
+        formattedGiftcardAmount
         formattedDiscountAmount
+        formattedVipPlusAmount
         formattedTaxAmount
         formattedTaxTotal
         formattedShippingAmount

+ 8 - 0
src/graphql/cart/mutations/UpdateCartItems.ts

@@ -36,9 +36,15 @@ export const UPDATE_CART_ITEM: TypedDocumentNode<UpdateCartItemData> = gql
             }
           }
         }
+        isVip
+        vipDiscountAmount
+        formattedVipDiscountAmount
+        giftcardNumber
         subtotal
         subTotalInclTax
         discountAmount
+        giftcardAmount
+        vipPlusAmount
         taxAmount
         taxTotal
         shippingAmount
@@ -46,7 +52,9 @@ export const UPDATE_CART_ITEM: TypedDocumentNode<UpdateCartItemData> = gql
         grandTotal
         formattedSubtotal
         formattedSubTotalInclTax
+        formattedGiftcardAmount
         formattedDiscountAmount
+        formattedVipPlusAmount
         formattedTaxAmount
         formattedTaxTotal
         formattedShippingAmount

+ 12 - 0
src/graphql/checkout/mutations/CreateSaveCheckoutCart.ts

@@ -6,12 +6,16 @@ export const CREATE_SAVE_CHECKOUT_CART: TypedDocumentNode<SaveCheckoutCartData>
         $shippingMethod: String
         $paymentMethod: String
         $couponCode: String
+        $giftCardNumber: String
+        $memberDiscount: String
     ) {
       createSaveCheckoutCart(
         input: {
             shippingMethod: $shippingMethod
             paymentMethod: $paymentMethod
             couponCode: $couponCode
+            giftCardNumber: $giftCardNumber
+            memberDiscount: $memberDiscount
         }
         ) {
             saveCheckoutCart {
@@ -37,9 +41,15 @@ export const CREATE_SAVE_CHECKOUT_CART: TypedDocumentNode<SaveCheckoutCartData>
                         }
                     }
                 }
+                isVip
+                vipDiscountAmount
+                formattedVipDiscountAmount
+                giftcardNumber
                 subtotal
                 subTotalInclTax
                 discountAmount
+                giftcardAmount
+                vipPlusAmount
                 taxAmount
                 taxTotal
                 shippingAmount
@@ -47,7 +57,9 @@ export const CREATE_SAVE_CHECKOUT_CART: TypedDocumentNode<SaveCheckoutCartData>
                 grandTotal
                 formattedSubtotal
                 formattedSubTotalInclTax
+                formattedGiftcardAmount
                 formattedDiscountAmount
+                formattedVipPlusAmount
                 formattedTaxAmount
                 formattedTaxTotal
                 formattedShippingAmount

+ 7 - 0
src/graphql/customer/query/GetOrderDetails.ts

@@ -34,6 +34,13 @@ export const GET_ORDER_DETAILS: TypedDocumentNode<OrderDetailsData> = gql`
     baseDiscountAmount
     shippingAmount
     baseShippingAmount
+    vipPlusAmount
+    vipDiscountAmount
+    baseVipPlusAmount
+    baseVipDiscountAmount
+    giftcardNumber
+    giftcardAmount
+    baseGiftcardAmount
     baseCurrencyCode
     channelCurrencyCode
     orderCurrencyCode

+ 15 - 1
src/types/cart/type.ts

@@ -43,11 +43,17 @@ export interface CartDetail {
   isGuest: boolean;
   itemsCount: number;
   items: CartItemsConnection;
+  isVip: boolean;
+  vipDiscountAmount: number;
+  formattedVipDiscountAmount: string;
+  giftcardNumber: string | null;
   subtotal: number; // Subtotal before discounts and taxes
   subTotalInclTax: number;
   // baseSubtotal: number;
   discountAmount: number;
   // baseDiscountAmount: number;
+  giftcardAmount: number;
+  vipPlusAmount: number;
   taxAmount: number;
   taxTotal: number;
   shippingAmount: number;
@@ -56,6 +62,8 @@ export interface CartDetail {
 
   formattedSubtotal: string;
   formattedSubTotalInclTax: string;
+  formattedGiftcardAmount: string;
+  formattedVipPlusAmount: string;
   formattedDiscountAmount: string;
   formattedTaxAmount: string;
   formattedTaxTotal: string;
@@ -135,7 +143,13 @@ export interface CreateCartTokenOperation {
   data: CreateCartTokenData;
   variables: CreateCartTokenVariables;
 }
-
+// apply coupon
+export interface CreateApplyCouponPayload {
+  applyCoupon: CartDetail;
+}
+export interface CreateApplyCouponData {
+  createApplyCoupon: CreateApplyCouponPayload;
+}
 // Merge Cart
 export interface CreateMergeCartPayload {
   mergeCart: CartDetail;

+ 7 - 0
src/types/customer/order.ts

@@ -106,6 +106,13 @@ export interface OrderDetails {
     baseDiscountAmount: number;
     shippingAmount: number;
     baseShippingAmount: number;
+    vipPlusAmount: string;
+    vipDiscountAmount: string;
+    baseVipPlusAmount: string;
+    baseVipDiscountAmount: string;
+    giftcardNumber: string;
+    giftcardAmount: string;
+    baseGiftcardAmount: string;
     baseCurrencyCode: string | null;
     channelCurrencyCode: string | null;
     orderCurrencyCode: string;

+ 9 - 0
src/utils/cartDetailTools.ts

@@ -8,6 +8,12 @@ export function formatCartDetail(cart:CartDetail): CartDetail {
         isGuest: cart.isGuest,
         itemsCount: cart.itemsCount,
         items: cart.items,
+        isVip: cart.isVip,
+        vipDiscountAmount: cart.vipDiscountAmount,
+        formattedVipDiscountAmount: cart.formattedVipDiscountAmount,
+        giftcardNumber: cart.giftcardNumber,
+        giftcardAmount: cart.giftcardAmount,
+        vipPlusAmount: cart.vipPlusAmount,
         subtotal: cart.subtotal,
         subTotalInclTax: cart.subTotalInclTax,
         discountAmount: cart.discountAmount,
@@ -20,6 +26,9 @@ export function formatCartDetail(cart:CartDetail): CartDetail {
         formattedSubtotal: cart.formattedSubtotal,
         formattedSubTotalInclTax: cart.formattedSubTotalInclTax,
 
+        formattedGiftcardAmount: cart.formattedGiftcardAmount,
+        formattedVipPlusAmount: cart.formattedVipPlusAmount,
+
         formattedDiscountAmount: cart.formattedDiscountAmount,
         formattedTaxAmount: cart.formattedTaxAmount,
         formattedTaxTotal: cart.formattedTaxTotal,