FROM CACHE - jp_header
解決済

liquidでオーダー行の数量×Product Variant valueの合計値を出したい

jjjjjkmiaaa
観光客
3 0 1

Product Variantにメタフィールドをつくって商品上代を登録しているので、

Orderが入った際にValiantからメタフィールドのvalueを参照し、

各行の商品数量×上代(メタフィールドvalue)を出して合計値を算出したいのですがうまくいきません。

 

現在記述のliquidは下記となります。

 

{% assign total_price = 0 %} 
{% for fulfillmentLineItems_item in fulfillment.fulfillmentLineItems %}
{% for metafields_item in fulfillmentLineItems_item.lineItem.variant.metafields %}
{% assign total_price = total_price | plus:metafields_item.value | times:fulfillmentLineItems_item.lineItem.currentQuantity %}
{% endfor %}
{% endfor %}
{{ total_price }}

 

全て上代が同じ15,500円と仮定し下記のように注文が入ったとします。

商品Valiant A:1点

商品Valiant B:2点

商品Valiant C:2点

商品Valiant D:2点

商品Valiant E:2点

商品Valiant F:1点

すると先述のliquidの記述では合計値が728,500円となってしまいます。

正しくは155,000円のはずです。

恐らく、 各行での計算ではなく先に計算した行に更に掛け算をされているようです。

※商品Valiant B~Eで3点→6点→12点→24点と増加していっています。

 

正しく出すにはどのようにすればよろしいでしょうか?

お力添えいただけると幸いです。

1 件の受理された解決策

株式会社フルバランス
Shopify Partner
1508 542 675

成功

質問拝見しました。

 

コードを拝見してtotal_price を更新する際に、plus ではなく times を使用する必要があルカと思われます。また、total_price の初期値は、各商品の数量と上代を掛け合わせた値を合計するために使用する必要があります!

 

以上のこと修正したコードが下記になりますので一度お試しいただけたらと思います!

 

{% assign total_price = 0 %} 
{% for fulfillmentLineItems_item in fulfillment.fulfillmentLineItems %} 
  {% for metafields_item in fulfillmentLineItems_item.lineItem.variant.metafields %} 
    {% if metafields_item.key == '上代' %} {# 上代部分にメタフィールドのキーを適切なものをいれる #}
      {% assign unit_price = metafields_item.value | times: 1 %}
      {% assign total_price = total_price | plus: (unit_price | times: fulfillmentLineItems_item.lineItem.currentQuantity) %} 
    {% endif %}
  {% endfor %} 
{% endfor %} 
{{ total_price }}

 

 

ご参考までにしてください。

なにかご質問があれば、お気軽にご相談ください。
お悩み解決できましたら、ベストアンサー、いいねいただけると励みになります。
何卒よろしくお願いします。

株式会社フルバランス

株式会社フルバランス(Shopify Experts)
Shopify専門のEC成長支援会社です。ストアの新規構築から運用や改善のサポートなどShopifyに関する幅広いサービスを行なっております。
ECの技術・実務・成長、お悩みのことがあれば、お気軽にご相談ください。
『すべてのブランドの特大成長エンジンを搭載する』 株式会社フルバランス

元の投稿で解決策を見る

4件の返信4

株式会社フルバランス
Shopify Partner
1508 542 675

成功

質問拝見しました。

 

コードを拝見してtotal_price を更新する際に、plus ではなく times を使用する必要があルカと思われます。また、total_price の初期値は、各商品の数量と上代を掛け合わせた値を合計するために使用する必要があります!

 

以上のこと修正したコードが下記になりますので一度お試しいただけたらと思います!

 

{% assign total_price = 0 %} 
{% for fulfillmentLineItems_item in fulfillment.fulfillmentLineItems %} 
  {% for metafields_item in fulfillmentLineItems_item.lineItem.variant.metafields %} 
    {% if metafields_item.key == '上代' %} {# 上代部分にメタフィールドのキーを適切なものをいれる #}
      {% assign unit_price = metafields_item.value | times: 1 %}
      {% assign total_price = total_price | plus: (unit_price | times: fulfillmentLineItems_item.lineItem.currentQuantity) %} 
    {% endif %}
  {% endfor %} 
{% endfor %} 
{{ total_price }}

 

 

ご参考までにしてください。

なにかご質問があれば、お気軽にご相談ください。
お悩み解決できましたら、ベストアンサー、いいねいただけると励みになります。
何卒よろしくお願いします。

株式会社フルバランス

株式会社フルバランス(Shopify Experts)
Shopify専門のEC成長支援会社です。ストアの新規構築から運用や改善のサポートなどShopifyに関する幅広いサービスを行なっております。
ECの技術・実務・成長、お悩みのことがあれば、お気軽にご相談ください。
『すべてのブランドの特大成長エンジンを搭載する』 株式会社フルバランス
jjjjjkmiaaa
観光客
3 0 1

ご返答いただきありがとうございます。

内容拝見して追加で質問させてください。

 

{% assign total_price = total_price | plus: (unit_price | times: fulfillmentLineItems_item.lineItem.currentQuantity) %} 

 

こちらの部分の()はどのように表現すればよいでしょうか?

ShopifyFlow内でliquidをかいているのですが、()が効きません。

※エラーではじかれて保存が押せません。

 

初心者で大変恐縮ですがご教示いただけますと幸いです。

jjjjjkmiaaa
観光客
3 0 1

すみません、こちらの件頂いたヒントをもとにliquidの書き方を変え解決いたしました!

ありがとうございました!

 

株式会社フルバランス
Shopify Partner
1508 542 675

即対応できず申し訳ございません。

ただいま確認したところ解決したようで安心しました。

 

また何かありましたらご気軽にご相談ください!

 

いいね、ベストアンサーをいただけますと励みになりますのでよろしければよろしくお願いします!

株式会社フルバランス(Shopify Experts)
Shopify専門のEC成長支援会社です。ストアの新規構築から運用や改善のサポートなどShopifyに関する幅広いサービスを行なっております。
ECの技術・実務・成長、お悩みのことがあれば、お気軽にご相談ください。
『すべてのブランドの特大成長エンジンを搭載する』 株式会社フルバランス