年間の購入金額を顧客にメタフィールドに格納するFlowを組みたいのですが方法がわからず。。
方法がわかる方、大変恐縮ですが、ご教示いただけますと幸いです。
【実現したいこと】
当年(20241.1-2024.12.31)の累計購入金額を顧客のメタフィールドに格納したい。
購入が増えたり、キャンセルが入るたびに更新して行きたい。
年間の購入金額を顧客にメタフィールドに格納するFlowを組みたいのですが方法がわからず。。
方法がわかる方、大変恐縮ですが、ご教示いただけますと幸いです。
【実現したいこと】
当年(20241.1-2024.12.31)の累計購入金額を顧客のメタフィールドに格納したい。
購入が増えたり、キャンセルが入るたびに更新して行きたい。
Run Codeを使用されてはどうでしょうか?
Order Createdの際の例だけになりますが、下記のようになるはずです。
[フロー全体]
[Run Code]
Run Codeの入力は下記です。
{
order {
createdAt
customer {
orders {
currentTotalPriceSet {
shopMoney {
amount
}
}
createdAt
}
}
}
}
Run Codeの出力は下記です。
type Output {
purchaingTotalYeary: Int!
}
Run Codeのコードは下記です。
export default function main(input) {
const currentDateTime = new Date(input.order.createdAt);
const lastYearDateTime = new Date(new Date(input.order.createdAt).setFullYear(currentDateTime.getFullYear() - 1));
const orders = input.order.customer.orders;
let purchaingTotalYeary = 0;
orders.forEach(order => {
const orderCreatedAt = new Date(order.createdAt);
if (orderCreatedAt > lastYearDateTime) {
purchaingTotalYeary = purchaingTotalYeary + order.currentTotalPriceSet.shopMoney.amount;
}
});
return {
purchaingTotalYeary: purchaingTotalYeary
}
}
Flow全体の説明をしますと、
Order Createdでトリガーし、
Run Codeでは、トリガーとなった注文の日時から1年以内の注文の合計金額を求め、
最後に顧客メタフィールドを更新しています。
十分にテストはしていませんので、
金額が一致するかは十分に検証いただく必要があります。
ご参考まで。
(キュー田辺)