Wrong displayed discount percentage

Μερικές φορές στο shopify τυχαίνει να έχει βάλει ο πελάτης έκπτωση 15% και σε μερικά προϊόντα να εμφανίζει ορθά 15% αλλά σε μερικά άλλα 14%. Αυτό παρατήρησα οτι συμβαίνει μάλλον επειδή η αρχική τιμή των προϊόντων και η τελική τιμή έχουν δεκαδικά ψηφία.

Υπόθεση

Επειδή στους αριθμούς χρησιμοποιούμε το "," για δεκαδικούς και το "." για χιλιάδες αλλά ο υπολογιστής τα αντιλαμβάνεται αντίστροφα όταν κάνει υπολογισμούς, σε συνδυασμό με το γεγονός οτι στο "divide_by" στρογγυλοποιεί προς τα κάτω το τελικό ποσοστό ήταν διαφορετικό απο αυτό που θα έπρεπε.

Λύση

  1. Μετατρέπω το price και το compare_at_price σε χρήματα χωρίς το σύμβολο
  2. Αντικαθιστώ το "," με "."
  3. Πολλαπλασιάζω με "1.0" ώστε να μετατραπεί σε float για να μπορούν να συμπεριλαμβάνονται τα δεκαδικά ψηφία στους υπολογισμούς

 


{%- if compare_at_price > price -%}
{% assign correct_price = price | money_without_currency | replace: ',', '.' | times: 1.0 %}
{% assign correct_compare_at_price = compare_at_price | money_without_currency | replace: ',', '.' | times: 1.0 %}
 
{% assign you_save = correct_compare_at_price | minus: correct_price %}
{% assign discount_percentage = you_save | divided_by: correct_compare_at_price | times: 100 | round %}
 
<div class="label label--sale mb-3 mr-3 text-nowrap" data-js-product-label-sale>{{ 'products.product.label.sale' | t: percent: discount_percentage }}</div>
{%- assign has_labels = true -%}
{%- else -%}
<div class="label label--sale mb-3 mr-3 text-nowrap d-none-important" data-js-product-label-sale></div>
{%- endif -%}

Was this article helpful?