Μερικές φορές στο shopify τυχαίνει να έχει βάλει ο πελάτης έκπτωση 15% και σε μερικά προϊόντα να εμφανίζει ορθά 15% αλλά σε μερικά άλλα 14%. Αυτό παρατήρησα οτι συμβαίνει μάλλον επειδή η αρχική τιμή των προϊόντων και η τελική τιμή έχουν δεκαδικά ψηφία.
Υπόθεση
Επειδή στους αριθμούς χρησιμοποιούμε το "," για δεκαδικούς και το "." για χιλιάδες αλλά ο υπολογιστής τα αντιλαμβάνεται αντίστροφα όταν κάνει υπολογισμούς, σε συνδυασμό με το γεγονός οτι στο "divide_by" στρογγυλοποιεί προς τα κάτω το τελικό ποσοστό ήταν διαφορετικό απο αυτό που θα έπρεπε.
Λύση
- Μετατρέπω το price και το compare_at_price σε χρήματα χωρίς το σύμβολο
- Αντικαθιστώ το "," με "."
- Πολλαπλασιάζω με "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 -%}