Migrating a sitewide percentage discount script
The easiest script to rebuild and still worth its own page, because half the spellings put the number the shopper KEEPS in the file rather than the number taken off. Multiply by 0.85 and the discount is 15, not 85.
ReconstruitIt reduced every line in the cart by the same percentage.
Les marchands ont écrit ceci de 4 façons différentes, et elles ne veulent pas toutes dire la même chose. Chaque variante figure ci-dessous avec son propre panier et ses propres chiffres.
Collez-le dans Sauvetage des Scripts et regardez ce qu'il reconstruit
- Copiez le Ruby avec le bouton placé à côté de chaque Script de cette page.
- Dans votre interface Shopify, ouvrez Stackable, puis Outils, puis Sauvetage des Scripts.
- Collez-le, lisez ce que l'outil annonce qu'il va construire et comparez-le aux réglages de cette page.
Sauvetage des Scripts fait partie du forfait Pro. Rien n'est publié tant que vous n'avez pas indiqué la remise de votre ancien Script et que les deux chiffres ne correspondent pas au centime près.
Flat percentage off all (D9)
ReconstruitPaire à risque D9. Ce fichier et son jumeau se ressemblent presque à l'identique et se comportent différemment, alors lisez les deux avant de décider lequel vous avez.
Input.cart.line_items.each do |li|
li.change_line_price(li.original_line_price * (1.0 - (20 / 100.0)), message: "20% off everything")
end
Output.cart = Input.cartReconnu comme Percentage off et reconstruit en offre de type volume. Voici les vraies clés de configuration avec lesquelles l'offre est enregistrée, pour que vous puissiez comparer votre propre reconstruction champ par champ.
| Réglage | Valeur | Clé de configuration |
|---|---|---|
| Offer type | volume | type |
| Counting | per_product | counting |
| Recurrence | once | recurrence |
| Tier 1 | min qty 1 -> 20% off | tiers[0] |
| Target scope | all | target.scope |
| Method | automatic | discountMethod |
| Allocation | standard | stacking.allocation |
| Combines with other discounts | no | stacking |
- Confirm which products this applies to. We could not read product targeting from the script.
Construit sur notre boutique de démonstration publique, Meridian Goods, pour que chaque prix ici puisse être reproduit plutôt que cru sur parole. La remise ci-dessous est ce que le moteur qui tourne au paiement calcule pour ce panier précis.
| Article | Qté | Prix unitaire |
|---|---|---|
| Braided USB-C Cable | 1 | $14.00 |
| Sous-total | $14.00 | |
| Remise | -$2.80 | |
| Total | $11.20 | |
Déconnecté, ou connecté en tant que client sans tag.
Avant la publication, l'outil demande ce que votre ancien Script faisait à un panier que vous avez déjà. Réglez-le sur 1 de Braided USB-C Cable à $14.00 et la réponse est fixée.
La remise est de $2.80. Le total payé par l'acheteur est de $11.20.
La comparaison est exacte, jusqu'à la plus petite unité de votre devise. Un centime d'écart et la publication reste bloquée, ce qui est tout l'intérêt de l'étape.
This rule carries no condition at all, so it fires on any cart holding anything and there is no quiet cart to build. The negative check is an empty cart, which the app runs for you. That is correct behaviour, not a failure.
Flat percentage kept fraction (D12)
ReconstruitPaire à risque D12. Ce fichier et son jumeau se ressemblent presque à l'identique et se comportent différemment, alors lisez les deux avant de décider lequel vous avez.
Input.cart.line_items.each do |line_item|
line_item.change_line_price(line_item.line_price * 0.85, message: "15% off")
end
Output.cart = Input.cartReconnu comme Percentage off et reconstruit en offre de type volume. Voici les vraies clés de configuration avec lesquelles l'offre est enregistrée, pour que vous puissiez comparer votre propre reconstruction champ par champ.
| Réglage | Valeur | Clé de configuration |
|---|---|---|
| Offer type | volume | type |
| Counting | per_product | counting |
| Recurrence | once | recurrence |
| Tier 1 | min qty 1 -> 15% off | tiers[0] |
| Target scope | all | target.scope |
| Method | automatic | discountMethod |
| Allocation | standard | stacking.allocation |
| Combines with other discounts | no | stacking |
- Confirm which products this applies to. We could not read product targeting from the script.
Construit sur notre boutique de démonstration publique, Meridian Goods, pour que chaque prix ici puisse être reproduit plutôt que cru sur parole. La remise ci-dessous est ce que le moteur qui tourne au paiement calcule pour ce panier précis.
| Article | Qté | Prix unitaire |
|---|---|---|
| Braided USB-C Cable | 1 | $14.00 |
| Sous-total | $14.00 | |
| Remise | -$2.10 | |
| Total | $11.90 | |
Déconnecté, ou connecté en tant que client sans tag.
Avant la publication, l'outil demande ce que votre ancien Script faisait à un panier que vous avez déjà. Réglez-le sur 1 de Braided USB-C Cable à $14.00 et la réponse est fixée.
La remise est de $2.10. Le total payé par l'acheteur est de $11.90.
La comparaison est exacte, jusqu'à la plus petite unité de votre devise. Un centime d'écart et la publication reste bloquée, ce qui est tout l'intérêt de l'étape.
This rule carries no condition at all, so it fires on any cart holding anything and there is no quiet cart to build. The negative check is an empty cart, which the app runs for you. That is correct behaviour, not a failure.
Flat percentage taken percent (D12)
ReconstruitPaire à risque D12. Ce fichier et son jumeau se ressemblent presque à l'identique et se comportent différemment, alors lisez les deux avant de décider lequel vous avez.
Input.cart.line_items.each do |line_item|
line_item.change_line_price(line_item.line_price * (1.0 - (15 / 100.0)), message: "15% off")
end
Output.cart = Input.cartReconnu comme Percentage off et reconstruit en offre de type volume. Voici les vraies clés de configuration avec lesquelles l'offre est enregistrée, pour que vous puissiez comparer votre propre reconstruction champ par champ.
| Réglage | Valeur | Clé de configuration |
|---|---|---|
| Offer type | volume | type |
| Counting | per_product | counting |
| Recurrence | once | recurrence |
| Tier 1 | min qty 1 -> 15% off | tiers[0] |
| Target scope | all | target.scope |
| Method | automatic | discountMethod |
| Allocation | standard | stacking.allocation |
| Combines with other discounts | no | stacking |
- Confirm which products this applies to. We could not read product targeting from the script.
Construit sur notre boutique de démonstration publique, Meridian Goods, pour que chaque prix ici puisse être reproduit plutôt que cru sur parole. La remise ci-dessous est ce que le moteur qui tourne au paiement calcule pour ce panier précis.
| Article | Qté | Prix unitaire |
|---|---|---|
| Braided USB-C Cable | 1 | $14.00 |
| Sous-total | $14.00 | |
| Remise | -$2.10 | |
| Total | $11.90 | |
Déconnecté, ou connecté en tant que client sans tag.
Avant la publication, l'outil demande ce que votre ancien Script faisait à un panier que vous avez déjà. Réglez-le sur 1 de Braided USB-C Cable à $14.00 et la réponse est fixée.
La remise est de $2.10. Le total payé par l'acheteur est de $11.90.
La comparaison est exacte, jusqu'à la plus petite unité de votre devise. Un centime d'écart et la publication reste bloquée, ce qui est tout l'intérêt de l'étape.
This rule carries no condition at all, so it fires on any cart holding anything and there is no quiet cart to build. The negative check is an empty cart, which the app runs for you. That is correct behaviour, not a failure.
Flat percentage off all 20 (D14)
ReconstruitPaire à risque D14. Ce fichier et son jumeau se ressemblent presque à l'identique et se comportent différemment, alors lisez les deux avant de décider lequel vous avez.
DISCOUNT_PERCENTAGE = 20
Input.cart.line_items.each do |line_item|
line_item.change_line_price(
line_item.line_price * (1.0 - (DISCOUNT_PERCENTAGE / 100.0)),
message: "20% off"
)
end
Output.cart = Input.cartReconnu comme Percentage off et reconstruit en offre de type volume. Voici les vraies clés de configuration avec lesquelles l'offre est enregistrée, pour que vous puissiez comparer votre propre reconstruction champ par champ.
| Réglage | Valeur | Clé de configuration |
|---|---|---|
| Offer type | volume | type |
| Counting | per_product | counting |
| Recurrence | once | recurrence |
| Tier 1 | min qty 1 -> 20% off | tiers[0] |
| Target scope | all | target.scope |
| Method | automatic | discountMethod |
| Allocation | standard | stacking.allocation |
| Combines with other discounts | no | stacking |
- Confirm which products this applies to. We could not read product targeting from the script.
Construit sur notre boutique de démonstration publique, Meridian Goods, pour que chaque prix ici puisse être reproduit plutôt que cru sur parole. La remise ci-dessous est ce que le moteur qui tourne au paiement calcule pour ce panier précis.
| Article | Qté | Prix unitaire |
|---|---|---|
| Braided USB-C Cable | 1 | $14.00 |
| Sous-total | $14.00 | |
| Remise | -$2.80 | |
| Total | $11.20 | |
Déconnecté, ou connecté en tant que client sans tag.
Avant la publication, l'outil demande ce que votre ancien Script faisait à un panier que vous avez déjà. Réglez-le sur 1 de Braided USB-C Cable à $14.00 et la réponse est fixée.
La remise est de $2.80. Le total payé par l'acheteur est de $11.20.
La comparaison est exacte, jusqu'à la plus petite unité de votre devise. Un centime d'écart et la publication reste bloquée, ce qui est tout l'intérêt de l'étape.
This rule carries no condition at all, so it fires on any cart holding anything and there is no quiet cart to build. The negative check is an empty cart, which the app runs for you. That is correct behaviour, not a failure.
Deux fichiers qui se ressemblent
Chaque paire ci-dessous est une même forme de Script écrite de deux façons. Une ou deux lignes les séparent et elles ne font pas la même chose, alors lisez les deux avant de décider laquelle vous avez.
Paire piégeuse D9
Flat percentage off all (D9)
ReconstruitReconstruit en offre volume.
Remise sur son propre panier : $2.80
li.change_line_price(li.original_line_price * (1.0 - (20 / 100.0)), message: "20% off everything")Scope targeting family tag (D9)
ReconstruitReconstruit en offre volume.
Remise sur son propre panier : $4.40
next unless li.variant.product.tags.include?('sale')
li.change_line_price(li.original_line_price * (1.0 - (20 / 100.0)), message: "20% off sale")Paire piégeuse D12
Flat percentage kept fraction (D12)
ReconstruitReconstruit en offre volume.
Remise sur son propre panier : $2.10
line_item.change_line_price(line_item.line_price * 0.85, message: "15% off")Flat percentage taken percent (D12)
ReconstruitReconstruit en offre volume.
Remise sur son propre panier : $2.10
line_item.change_line_price(line_item.line_price * (1.0 - (15 / 100.0)), message: "15% off")Paire piégeuse D14
Flat percentage off all 20 (D14)
ReconstruitReconstruit en offre volume.
Remise sur son propre panier : $2.80
DISCOUNT_PERCENTAGE = 20
Input.cart.line_items.each do |line_item|
line_item.change_line_price(
line_item.line_price * (1.0 - (DISCOUNT_PERCENTAGE / 100.0)),
message: "20% off"
)Vat removal by country (D14)
ReconstruitReconstruit en offre volume.
Remise sur son propre panier : $2.33
VAT = 20
VAT_REMOVAL_MESSAGE = "VAT removed"
COUNTRY_CODES_EU = %w[AT BE BG CY CZ DK EE FI FR DE GR HU IE IT LV LT LU MT NL PL PT RO SK SI ES SE GB]
country_code = Input.cart.shipping_address&.country_code
unless country_code.nil? || COUNTRY_CODES_EU.include?(country_code)
vat_only_fraction = VAT / (100.0 + VAT)Et 5 autres lignes différentes, sur sa propre page.
Questions fréquentes
- Will Stackable rebuild this script?
- Yes. Every spelling on this page is rebuilt today as a volume offer, and the cart above is the one that proves it.
- What cart proves it works?
- 1 x Braided USB-C Cable at $14.00. The engine takes $2.80 off, and checkout charges $11.20.
- What will I have to check before publishing?
- Confirm which products this applies to. We could not read product targeting from the script.
Formes de Script apparentées
A discount limited to products carrying one tag, vendor or type.
Tax-inclusive prices reduced for shoppers outside the VAT area.
Everything in the clearance line repriced to one round number per unit.
Collez votre Script et voyez sa reconstruction
La reconstruction est comparée au montant que facturait votre ancien Script avant que vous puissiez la publier.