ejemployers de scripts de línea de artículo
Esta página fue impresa el 2023年4月10日。Para acceder a la versión actual, por favor visita https://help.shopify.com/es/manual/checkout-settings/script-editor/examples/line-item-scripts。
Los scripts de línea de artículo afectan Los artículos un carrito, y pueden cambiar sus ricedades和precios。Estos scripts se ejecutan cada vez que se cambia un atributo de carrito, como cudo se agrega o se elimina un artículo, se cambia la dirección de envío o se agrega un código de descuento。
Shopify +
Shopify脚本y la aplicación脚本编辑器 独奏están不尊重para los商人Shopify + .
El 13 de agoto de 2024, Shopify脚本se retirará y ya no será兼容。迁移脚本的存在Shopify功能 Antes de esta fecha。
Para usar las plantilla en esta página,创造一个新的脚本,一个plantilla en blanco。
出来的:
Desde tu panel de control de Shopify, veAplicaciones >脚本编辑器 .
hazz clic enCrear脚本 .
hazz clic enLíneas de artículos .
Selecciona白Plantilla en blanco Y luego haz clic enCrear脚本 .
恩拉seccióncódigo fuente de Ruby , elimina la línea de código predeterminada:<代码>输出。车=输入.车代码>
Copia un script desde esta página y pégalo en la sección decódigo fuente de Ruby .
编辑拉sección德configuracion可个性化的 这是我的剧本。
Prueba tu脚本。Para más información, consulta la secciónProbar y depurar Shopify脚本 .
Después德拉普鲁巴:
hazz clic enGuardar borrador Para guardar UN borrador not publicado del script, o
hazz clic en保护公众 Para crear y publicar脚本。
这是我们的车,这是我们的气
Usa este script para ofrecer un descuento en dólares que aumente según英勇总爱artículos en el carrito。在马纳拉的分布más平等的可能的中心artículos在carrito。
Por ejemplo, ofrece a los clientes un descuento de $25 sobre su total si gastan más de $150, uno de $50 si gastan más de $300, o uno de $75 si gastan más de $400。
# ================================ 可定制的设置 ================================ # ================================================================ #根据消费阈值分级购物车折扣 # #如果购物车总数大于(或等于)一个输入 # threshold,关联的折扣将应用到购物车。的 #折扣将尽可能均匀地分摊到所有商品上。 # # -“threshold”是符合条件所需的花费金额 # - 'discount_amount'是应用于 #车 # - 'discount_message'是显示折扣时的消息 #被应用 # ================================================================ SPENDING_THRESHOLDS = [ { 阈值: 150 , discount_amount: 25 , discount_message: “花150美元就能得到25美元的折扣!” , }, { 阈值: 300 , discount_amount: 50 , discount_message: “花300美元就能得到50美元的折扣!” , }, { 阈值: 400 , discount_amount: 75 , discount_message: “花400美元就能减75美元!” , }, ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # DollarDiscountApplicator # #将输入的折扣应用到所提供的行项目。 # ================================================================ 类 DollarDiscountApplicator def 初始化 ( discount_message ) @discount_message = discount_message 结束 def 应用 ( line_item , discount_amount ) new_line_price = line_item . line_price - discount_amount line_item . change_line_price ( new_line_price , 信息: @discount_message ) 结束 结束 # ================================================================ # TieredCartDiscountBySpendCampaign # #如果购物车总数大于(或等于)一个输入 # threshold,关联的折扣将应用到购物车。的 #折扣将尽可能均匀地分摊到所有商品上。 # ================================================================ 类 TieredCartDiscountBySpendCampaign def 初始化 ( 层 ) @tiers = 层 . sort_by { | 层 | 层 [ :阈值 ] }。 反向 结束 def 运行 ( 车 ) applicable_tier = @tiers . 找到 { | 层 | 车 . subtotal_price > = ( 钱 . 新 ( 分: One hundred. ) * 层 [ :阈值 ]) } 返回 如果 applicable_tier . nil ? discount_applicator = DollarDiscountApplicator . 新 ( applicable_tier [ : discount_message ]) discount_amount = applicable_tier [ : discount_amount ] 项目 = 车 . line_items . sort_by { | line_item | line_item . 变体 . 价格 } 自我 . loop_items ( 车 , 项目 , discount_amount , discount_applicator ) 结束 def loop_items ( 车 , line_items , discount_amount , discount_applicator ) avg_discount = ( discount_amount . to_f * ( 1 / line_items . 地图 ( & 数量: ). 减少 ( 0 , : + )))。 轮 ( 2 ) avg_discount = 钱 . 新 ( 分: One hundred. ) * avg_discount discount_amount = 钱 . 新 ( 分: One hundred. ) * discount_amount line_items . each_with_index 做 | line_item , 指数 | 打破 如果 discount_amount < = 钱 . 零 line_discount = avg_discount * line_item . 数量 如果 discount_amount < line_discount || 指数 = = ( line_items . 大小 - 1 ) discount_update = line_item . line_price > discount_amount ? discount_amount : line_item . line_price 其他的 discount_update = line_item . line_price > line_discount ? line_discount : line_item . line_price 结束 discount_amount - = discount_update discount_applicator . 应用 ( line_item , discount_update ) 结束 结束 结束 活动 = [ TieredCartDiscountBySpendCampaign . 新 ( SPENDING_THRESHOLDS ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车
Descuento escalonado por gasto
Usa este script para ofrecer un descuento porcential que aumente según英勇总爱artículos en el carrito。
请允许我向您的客户收取10% si加税$30 más, 15% si加税$50 más, 20% si加税$100 más。
# ================================ 可定制的设置 ================================ # ================================================================ #根据消费门槛分级折扣 # #如果购物车总数大于(或等于)一个输入 # threshold,则关联折扣应用于每个项目。 # # -“threshold”是符合条件所需的花费金额 # - 'discount_type'是要提供的折扣类型。可以 #: # - ': % ' # - ':dollar' # - 'discount_amount'是百分比/美元折扣 # apply(每项) # - 'discount_message'是显示折扣时的消息 #被应用 # ================================================================ SPENDING_THRESHOLDS = [ { 阈值: 30. , discount_type:百分比 , discount_amount: 10 , discount_message: “花30美元就能打九折!” , }, { 阈值: 50 , discount_type:百分比 , discount_amount: 15 , discount_message: “花50美元就能打八五折!” , }, { 阈值: One hundred. , discount_type:百分比 , discount_amount: 20. , discount_message: “花100美元就能打8折!” , }, ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # DiscountApplicator # #将输入的折扣应用到所提供的行项目。 # ================================================================ 类 DiscountApplicator def 初始化 ( discount_type , discount_amount , discount_message ) @discount_type = discount_type @discount_message = discount_message @discount_amount = 如果 discount_type = = : % 1 - ( discount_amount * 0.01 ) 其他的 钱 . 新 ( 分: One hundred. ) * discount_amount 结束 结束 def 应用 ( line_item ) new_line_price = 如果 @discount_type = = : % line_item . line_price * @discount_amount 其他的 [ line_item . line_price - ( @discount_amount * line_item . 数量 ), 钱 . 零 ]。 马克斯 结束 line_item . change_line_price ( new_line_price , 信息: @discount_message ) 结束 结束 # ================================================================ # TieredDiscountBySpendCampaign # #如果购物车总数大于(或等于)一个输入 # threshold,则关联折扣应用于每个项目。 # ================================================================ 类 TieredDiscountBySpendCampaign def 初始化 ( 层 ) @tiers = 层 . sort_by { | 层 | 层 [ :阈值 ] }。 反向 结束 def 运行 ( 车 ) applicable_tier = @tiers . 找到 { | 层 | 车 . subtotal_price > = ( 钱 . 新 ( 分: One hundred. ) * 层 [ :阈值 ]) } 返回 如果 applicable_tier . nil ? discount_applicator = DiscountApplicator . 新 ( applicable_tier [ : discount_type ), applicable_tier [ : discount_amount ), applicable_tier [ : discount_message ] ) 车 . line_items . 每一个 做 | line_item | 下一个 如果 line_item . 变体 . 产品 . gift_card吗? discount_applicator . 应用 ( line_item ) 结束 结束 结束 活动 = [ TieredDiscountBySpendCampaign . 新 ( SPENDING_THRESHOLDS ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车
Descuento escalonado por cantidad de productos
Usa este script para ofrecer un descuento masivo en un productoen particular, con un porcentaje de descuento que aumente según la cantidad de esos productos en el carrito。
Por ejemplo, ofrece a los clientes un descuento del 10% Por cada宽边帽si compran 2宽边帽o más, o del 15% si compran 5宽边帽o más。
# ================================ 可定制的设置 ================================ # ================================================================ #按数量分级产品折扣 # 如果匹配项的总数大于(或 #等于)输入的阈值,则相关折扣为 #应用于每个匹配项。 # # - 'product_selector_match_type'决定我们是否寻找 #与输入选择器匹配或不匹配的产品。可以 号是: # - ':include'检查产品是否匹配 # - ':exclude'以确保产品不匹配 # - 'product_selector_type'决定产品的合格程度 #将被识别。可以是: # - ':tag'按标签查找产品 # - ':type'按类型查找产品 # - ':vendor'按供应商查找产品 # - ':product_id'按ID查找产品 # - ':variant_id'通过变量ID查找产品 # - ':subscription'查找订阅产品 # - ':all'用于所有产品 # - 'product_selectors'是一个标识符列表(从上面) #合格产品。产品/变体ID列表应该只 #包含数字(例如。没有引号)。如果使用':all',则此 #也可以是“nil”。 # - 'tiers'是一个层列表,其中: # -“quantity”是你需要购买的最小数量 #合格 # - 'discount_type'是要提供的折扣类型。可以 #: # - ': % ' # - ':dollar' # - 'discount_amount'是百分比/美元折扣 # apply(每项) # - 'discount_message'是显示折扣时的消息 #被应用 # ================================================================ PRODUCT_DISCOUNT_TIERS = [ { product_selector_match_type:包括 , product_selector_type:标签 , product_selectors: [ “your_tag” ), 层: [ { 数量: 2 , discount_type:百分比 , discount_amount: 10 , discount_message: “2人以上9折” , }, { 数量: 5 , discount_type:百分比 , discount_amount: 15 , discount_message: “5岁以上打八五折” , }, ), }, ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # ProductSelector # #根据输入的标准查找匹配的产品。 # ================================================================ 类 ProductSelector def 初始化 ( match_type , selector_type , 选择器 ) @match_type = match_type @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @selector_type = selector_type @ selector = 选择器 结束 def 比赛吗? ( line_item ) 如果 自我 . respond_to吗? ( @selector_type ) 自我 . 发送 ( @selector_type , line_item ) 其他的 提高 RuntimeError . 新 ( “无效的产品选择器类型” ) 结束 结束 def 标签 ( line_item ) product_tags = line_item . 变体 . 产品 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @ selector & product_tags ). 发送 ( @comparator ) 结束 def 类型 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . product_type . downcase . 带 ) 结束 def 供应商 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . 供应商 . downcase . 带 ) 结束 def product_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . id ) 结束 def variant_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . id ) 结束 def 订阅 ( line_item ) ! line_item . selling_plan_id . nil ? 结束 def 所有 ( line_item ) 真正的 结束 结束 # ================================================================ # DiscountApplicator # #将输入的折扣应用到所提供的行项目。 # ================================================================ 类 DiscountApplicator def 初始化 ( discount_type , discount_amount , discount_message ) @discount_type = discount_type @discount_message = discount_message @discount_amount = 如果 discount_type = = : % 1 - ( discount_amount * 0.01 ) 其他的 钱 . 新 ( 分: One hundred. ) * discount_amount 结束 结束 def 应用 ( line_item ) new_line_price = 如果 @discount_type = = : % line_item . line_price * @discount_amount 其他的 [ line_item . line_price - ( @discount_amount * line_item . 数量 ), 钱 . 零 ]。 马克斯 结束 line_item . change_line_price ( new_line_price , 信息: @discount_message ) 结束 结束 # ================================================================ # TieredProductDiscountByQuantityCampaign # 如果匹配项的总数大于(或 #等于)输入的阈值,则相关折扣为 #应用于每个匹配项。 # ================================================================ 类 TieredProductDiscountByQuantityCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 ) @campaigns . 每一个 做 | 运动 | product_selector = ProductSelector . 新 ( 运动 [ : product_selector_match_type ), 运动 [ : product_selector_type ), 运动 [ : product_selectors ), ) applicable_items = 车 . line_items . 选择 { | line_item | product_selector . 比赛吗? ( line_item ) } 下一个 如果 applicable_items . nil ? total_applicable_quantity = applicable_items . 地图 ( & 数量: ). 减少 ( 0 , : + ) 层 = 运动 [ :层 ]。 sort_by { | 层 | 层 [ 数量: ] }。 反向 applicable_tier = 层 . 找到 { | 层 | 层 [ 数量: ] < = total_applicable_quantity } 下一个 如果 applicable_tier . nil ? discount_applicator = DiscountApplicator . 新 ( applicable_tier [ : discount_type ), applicable_tier [ : discount_amount ), applicable_tier [ : discount_message ] ) applicable_items . 每一个 做 | line_item | discount_applicator . 应用 ( line_item ) 结束 结束 结束 结束 活动 = [ TieredProductDiscountByQuantityCampaign . 新 ( PRODUCT_DISCOUNT_TIERS ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车
Descuento escalonado por gasto de productos
Usa este script para ofrecer un descuento poror porcentaje que aumente según英勇总artículos específicos en el carrito。
Por ejemplo, ofrece a los clientes un descuento del 10% si gastan $30 o más, del 15% si gastan $50 o más, y del 20% si gastan $100 o más, pero solo para los artículos con una ceremony específica。
# ================================ 可定制的设置 ================================ # ================================================================ #分级产品折扣产品消费Threhsold # 如果花费在匹配物品上的总金额大于(或 #等于)输入的阈值,则相关折扣为 #应用于每个匹配项。 # # - 'product_selector_match_type'决定我们是否寻找 #与输入选择器匹配或不匹配的产品。可以 号是: # - ':include'检查产品是否匹配 # - ':exclude'以确保产品不匹配 # - 'product_selector_type'决定产品的合格程度 #将被识别。可以是: # - ':tag'按标签查找产品 # - ':type'按类型查找产品 # - ':vendor'按供应商查找产品 # - ':product_id'按ID查找产品 # - ':variant_id'通过变量ID查找产品 # - ':subscription'查找订阅产品 # - ':all'用于所有产品 # - 'product_selectors'是一个标识符列表(从上面) #用于合格产品。产品/变体ID列表应该 #只包含数字(例如。没有引号)。如果使用':all', # this也可以是'nil'。 # - 'tiers'是一个层列表,其中: # -“threshold”是需要的最低金额 #合格 # - 'discount_type'是要提供的折扣类型。可以 #: # - ': % ' # - ':dollar' # - 'discount_amount'是百分比/美元折扣 # apply(每项) # - 'discount_message'是显示折扣时的消息 #被应用 # ================================================================ PRODUCT_DISCOUNT_TIERS = [ { product_selector_match_type:排除 , product_selector_type:标签 , product_selectors: [ “your_tag” , “another_tag” ), 层: [ { 阈值: One hundred. , discount_type:百分比 , discount_amount: 10 , discount_message: “花100美元或以上,就能打九折!” , }, ), }, ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # ProductSelector # #根据输入的标准查找匹配的产品。 # ================================================================ 类 ProductSelector def 初始化 ( match_type , selector_type , 选择器 ) @match_type = match_type @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @selector_type = selector_type @ selector = 选择器 结束 def 比赛吗? ( line_item ) 如果 自我 . respond_to吗? ( @selector_type ) 自我 . 发送 ( @selector_type , line_item ) 其他的 提高 RuntimeError . 新 ( “无效的产品选择器类型” ) 结束 结束 def 标签 ( line_item ) product_tags = line_item . 变体 . 产品 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @ selector & product_tags ). 发送 ( @comparator ) 结束 def 类型 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . product_type . downcase . 带 ) 结束 def 供应商 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . 供应商 . downcase . 带 ) 结束 def product_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . id ) 结束 def variant_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . id ) 结束 def 订阅 ( line_item ) ! line_item . selling_plan_id . nil ? 结束 def 所有 ( line_item ) 真正的 结束 结束 # ================================================================ # DiscountApplicator # #将输入的折扣应用到所提供的行项目。 # ================================================================ 类 DiscountApplicator def 初始化 ( discount_type , discount_amount , discount_message ) @discount_type = discount_type @discount_message = discount_message @discount_amount = 如果 discount_type = = : % 1 - ( discount_amount * 0.01 ) 其他的 钱 . 新 ( 分: One hundred. ) * discount_amount 结束 结束 def 应用 ( line_item ) new_line_price = 如果 @discount_type = = : % line_item . line_price * @discount_amount 其他的 [ line_item . line_price - ( @discount_amount * line_item . 数量 ), 钱 . 零 ]。 马克斯 结束 line_item . change_line_price ( new_line_price , 信息: @discount_message ) 结束 结束 # ================================================================ # TieredProductDiscountByProductSpendCampaign # 如果花费在匹配物品上的总金额大于(或 #等于)输入的阈值,则相关折扣为 #应用于每个匹配项。 # ================================================================ 类 TieredProductDiscountByProductSpendCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 ) @campaigns . 每一个 做 | 运动 | 如果 运动 [ : product_selector_type ] = = :所有 total_applicable_cost = 车 . subtotal_price applicable_items = 车 . line_items 其他的 product_selector = ProductSelector . 新 ( 运动 [ : product_selector_match_type ), 运动 [ : product_selector_type ), 运动 [ : product_selectors ), ) applicable_items = 车 . line_items . 选择 { | line_item | product_selector . 比赛吗? ( line_item ) } 下一个 如果 applicable_items . nil ? total_applicable_cost = applicable_items . 地图 ( & : line_price ). 减少 ( 钱 . 零 , : + ) 结束 层 = 运动 [ :层 ]。 sort_by { | 层 | 层 [ :阈值 ] }。 反向 applicable_tier = 层 . 找到 { | 层 | total_applicable_cost > = ( 钱 . 新 ( 分: One hundred. ) * 层 [ :阈值 ]) } 下一个 如果 applicable_tier . nil ? discount_applicator = DiscountApplicator . 新 ( applicable_tier [ : discount_type ), applicable_tier [ : discount_amount ), applicable_tier [ : discount_message ] ) applicable_items . 每一个 做 | line_item | discount_applicator . 应用 ( line_item ) 结束 结束 结束 结束 活动 = [ TieredProductDiscountByProductSpendCampaign . 新 ( PRODUCT_DISCOUNT_TIERS ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车
Descuento de producto
Usa este script para ofrecer un descuento en artículos específicos。
Por ejemplo, ofrece a los clients un descuento del 10% en artículos con la etiquette<代码>折扣代码>.
# ================================ 可定制的设置 ================================ # ================================================================ #按产品折扣 # 任何匹配的项目将按输入的金额打折。 # # - 'product_selector_match_type'决定我们是否寻找 #与输入选择器匹配或不匹配的产品。可以 号是: # - ':include'检查产品是否匹配 # - ':exclude'以确保产品不匹配 # - 'product_selector_type'决定产品的合格程度 #将被识别。可以是: # - ':tag'按标签查找产品 # - ':type'按类型查找产品 # - ':vendor'按供应商查找产品 # - ':product_id'按ID查找产品 # - ':variant_id'通过变量ID查找产品 # - ':subscription'查找订阅产品 # - ':all'用于所有产品 # - 'product_selectors'是一个标识符列表(从上面) #用于合格产品。产品/变体ID列表应该 #只包含数字(例如。没有引号)。如果使用':all', # this也可以是'nil'。 # - 'discount_type'是要提供的折扣类型。可以 #: # - ': % ' # - ':dollar' # - 'discount_amount'是百分比/美元折扣 # apply(每项) # - 'discount_message'是显示折扣时的消息 #被应用 # ================================================================ PRODUCT_DISCOUNTS = [ { product_selector_match_type:包括 , product_selector_type:标签 , product_selectors: [ “your_tag” ), discount_type:百分比 , discount_amount: 10 , discount_message: “带标签的产品打九折!” } ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # ProductSelector # #根据输入的标准查找匹配的产品。 # ================================================================ 类 ProductSelector def 初始化 ( match_type , selector_type , 选择器 ) @match_type = match_type @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @selector_type = selector_type @ selector = 选择器 结束 def 比赛吗? ( line_item ) 如果 自我 . respond_to吗? ( @selector_type ) 自我 . 发送 ( @selector_type , line_item ) 其他的 提高 RuntimeError . 新 ( “无效的产品选择器类型” ) 结束 结束 def 标签 ( line_item ) product_tags = line_item . 变体 . 产品 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @ selector & product_tags ). 发送 ( @comparator ) 结束 def 类型 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . product_type . downcase . 带 ) 结束 def 供应商 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . 供应商 . downcase . 带 ) 结束 def product_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . id ) 结束 def variant_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . id ) 结束 def 订阅 ( line_item ) ! line_item . selling_plan_id . nil ? 结束 def 所有 ( line_item ) 真正的 结束 结束 # ================================================================ # DiscountApplicator # #将输入的折扣应用到所提供的行项目。 # ================================================================ 类 DiscountApplicator def 初始化 ( discount_type , discount_amount , discount_message ) @discount_type = discount_type @discount_message = discount_message @discount_amount = 如果 discount_type = = : % 1 - ( discount_amount * 0.01 ) 其他的 钱 . 新 ( 分: One hundred. ) * discount_amount 结束 结束 def 应用 ( line_item ) new_line_price = 如果 @discount_type = = : % line_item . line_price * @discount_amount 其他的 [ line_item . line_price - ( @discount_amount * line_item . 数量 ), 钱 . 零 ]。 马克斯 结束 line_item . change_line_price ( new_line_price , 信息: @discount_message ) 结束 结束 # ================================================================ # ProductDiscountCampaign # 任何匹配的项目将按输入的金额打折。 # ================================================================ 类 ProductDiscountCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 ) @campaigns . 每一个 做 | 运动 | product_selector = ProductSelector . 新 ( 运动 [ : product_selector_match_type ), 运动 [ : product_selector_type ), 运动 [ : product_selectors ), ) discount_applicator = DiscountApplicator . 新 ( 运动 [ : discount_type ), 运动 [ : discount_amount ), 运动 [ : discount_message ] ) 车 . line_items . 每一个 做 | line_item | 下一个 除非 product_selector . 比赛吗? ( line_item ) discount_applicator . 应用 ( line_item ) 结束 结束 结束 结束 活动 = [ ProductDiscountCampaign . 新 ( PRODUCT_DISCOUNTS ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车
堕落堕落código堕落堕落
Usa este script para ofrecer un descucuento en determinados artículos si se utiza un código de descuento específico。
Por ejemplo, ofrece a los clients un descuento del 10% en artículos con la etiquette<代码>折扣代码>Si usan el código de descuento<代码>DISCOUNT_10代码>.
# ================================ 可定制的设置 ================================ # ================================================================ #产品折扣折扣码 # #如果使用了任何匹配的折扣代码,则任何匹配的项目 #将按输入的金额折算。 # # - 'discount_code_match_type'确定是否下面 # strings应该是完全匹配或部分匹配。可以是: # - ':exact'用于精确匹配 # - ':partial'表示部分匹配 # - 'discount_codes'是一个字符串列表,用于标识折扣 #代码 # - 'product_selector_match_type'决定我们是否寻找 #与输入选择器匹配或不匹配的产品。可以 号是: # - ':include'检查产品是否匹配 # - ':exclude'以确保产品不匹配 # - 'product_selector_type'决定产品的合格程度 #将被识别。可以是: # - ':tag'按标签查找产品 # - ':type'按类型查找产品 # - ':vendor'按供应商查找产品 # - ':product_id'按ID查找产品 # - ':variant_id'通过变量ID查找产品 # - ':subscription'查找订阅产品 # - ':all'用于所有产品 # - 'product_selectors'是一个标识符列表(从上面) #用于合格产品。产品/变体ID列表应该 #只包含数字(例如。没有引号)。如果使用':all', # this也可以是'nil'。 # - 'discount_type'是要提供的折扣类型。可以 #: # - ': % ' # - ':dollar' # - 'discount_amount'是百分比/美元折扣 # apply(每项) # - 'discount_message'是显示折扣时的消息 #被应用 # ================================================================ PRODUCT_DISCOUNTS_BY_DISCOUNT_CODE = [ { discount_code_match_type:精确 , discount_codes: [ “TESTCODE1” , “TESTCODE2” ), product_selector_match_type:包括 , product_selector_type:标签 , product_selectors: [ “your_tag” ), discount_type:百分比 , discount_amount: 10 , discount_message: “带标签的产品打九折!” } ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # DiscountCodeSelector # 属性中的任意一个匹配 #输入的代码。 # ================================================================ 类 DiscountCodeSelector def 初始化 ( match_type , discount_codes ) @comparator = match_type = = :确切 ? “= =” : “有吗?” @discount_codes = discount_codes . 地图 { | discount_code | discount_code . upcase . 带 } 结束 def 比赛吗? ( discount_code ) @discount_codes . 任何? { | 代码 | discount_code . 代码 . upcase . 发送 ( @comparator , 代码 ) } 结束 结束 # ================================================================ # ProductSelector # #根据输入的标准查找匹配的产品。 # ================================================================ 类 ProductSelector def 初始化 ( match_type , selector_type , 选择器 ) @match_type = match_type @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @selector_type = selector_type @ selector = 选择器 结束 def 比赛吗? ( line_item ) 如果 自我 . respond_to吗? ( @selector_type ) 自我 . 发送 ( @selector_type , line_item ) 其他的 提高 RuntimeError . 新 ( “无效的产品选择器类型” ) 结束 结束 def 标签 ( line_item ) product_tags = line_item . 变体 . 产品 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @ selector & product_tags ). 发送 ( @comparator ) 结束 def 类型 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . product_type . downcase . 带 ) 结束 def 供应商 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . 供应商 . downcase . 带 ) 结束 def product_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . id ) 结束 def variant_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . id ) 结束 def 订阅 ( line_item ) ! line_item . selling_plan_id . nil ? 结束 def 所有 ( line_item ) 真正的 结束 结束 # ================================================================ # DiscountApplicator # #将输入的折扣应用到所提供的行项目。 # ================================================================ 类 DiscountApplicator def 初始化 ( discount_type , discount_amount , discount_message ) @discount_type = discount_type @discount_message = discount_message @discount_amount = 如果 discount_type = = : % 1 - ( discount_amount * 0.01 ) 其他的 钱 . 新 ( 分: One hundred. ) * discount_amount 结束 结束 def 应用 ( line_item ) new_line_price = 如果 @discount_type = = : % line_item . line_price * @discount_amount 其他的 [ line_item . line_price - ( @discount_amount * line_item . 数量 ), 钱 . 零 ]。 马克斯 结束 line_item . change_line_price ( new_line_price , 信息: @discount_message ) 结束 结束 # ================================================================ # ProductDiscountByCodeCampaign # #如果使用了任何匹配的折扣代码,则任何匹配的项目 #将按输入的金额折算。 # ================================================================ 类 ProductDiscountByCodeCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 ) 返回 如果 车 . discount_code . nil ? @campaigns . 每一个 做 | 运动 | discount_code_selector = DiscountCodeSelector . 新 ( 运动 [ : discount_code_match_type ), 运动 [ : discount_codes ] ) 下一个 除非 discount_code_selector . 比赛吗? ( 车 . discount_code ) product_selector = ProductSelector . 新 ( 运动 [ : product_selector_match_type ), 运动 [ : product_selector_type ), 运动 [ : product_selectors ), ) discount_applicator = DiscountApplicator . 新 ( 运动 [ : discount_type ), 运动 [ : discount_amount ), 运动 [ : discount_message ] ) 车 . line_items . 每一个 做 | line_item | 下一个 除非 product_selector . 比赛吗? ( line_item ) discount_applicator . 应用 ( line_item ) 结束 结束 结束 结束 活动 = [ ProductDiscountByCodeCampaign . 新 ( PRODUCT_DISCOUNTS_BY_DISCOUNT_CODE ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车
对比悬臂específica这是我们的产物,重复的第二悬臂
Usa este script para ofrecer un descuento en un artículo específico si se compra más de una cantidad determinada。
我爱你,我爱你artículos我爱你的礼节<代码>折扣代码>Para recibir UN descuento del 50% en UN cuarto artículo con la etiquette<代码>折扣代码>.
背板
Este脚本no agregará al carrito los artículos para los que ponga“comppra x, obtén y”;独唱一首歌曲artículos que ya estén en el carrito。
# ================================ 可定制的设置 ================================ # ================================================================ #买X,买Y买Z # #购买一定数量的匹配物品,得到一定数量的物品 使用相同匹配项目的#,以应用所输入的折扣。为 #的例子: # #“买两件带有‘标签’的产品,再买一件 #标有“tag”的标签,优惠10%” # # - 'product_selector_match_type'决定我们是否寻找 #与输入选择器匹配或不匹配的产品。可以 号是: # - ':include'检查产品是否匹配 # - ':exclude'以确保产品不匹配 # - 'product_selector_type'决定产品的合格程度 #将被识别。可以是: # - ':tag'按标签查找产品 # - ':type'按类型查找产品 # - ':vendor'按供应商查找产品 # - ':product_id'按ID查找产品 # - ':variant_id'通过变量ID查找产品 # - ':subscription'查找订阅产品 # - ':all'用于所有产品 # - 'product_selectors'是一个标识符列表(从上面) #合格产品。产品/变体ID列表应该只 #包含数字(例如。没有引号)。如果使用':all',则此 #也可以是“nil”。 # - 'quantity_to_buy'是需要购买的产品数量 #合格 # - 'quantity_to_discount'是要打折的产品数量 # - 'discount_type'是要提供的折扣类型。可以 #: # - ': % ' # - ':dollar' # - 'discount_amount'是百分比/美元折扣 # apply(每项) # - 'discount_message'是显示折扣时的消息 #被应用 # #在运行多个offer的情况下需要注意的是 #产品选择之间不应该有任何重叠 #因为这可能会导致额外的折扣。例如,你应该 #不要提供“购买1件X产品,5折优惠1件”,以及“购买2件” # X产品,送一件” # ================================================================ BUY_X_GET_Y_FOR_Z = [ { product_selector_match_type:包括 , product_selector_type:: , product_selectors: 零 , quantity_to_buy: 1 , quantity_to_discount: 1 , discount_type:百分比 , discount_amount: 50 , discount_message: “买一件,第二件五折!” , }, ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # ProductSelector # #根据输入的标准查找匹配的产品。 # ================================================================ 类 ProductSelector def 初始化 ( match_type , selector_type , 选择器 ) @match_type = match_type @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @selector_type = selector_type @ selector = 选择器 结束 def 比赛吗? ( line_item ) 如果 自我 . respond_to吗? ( @selector_type ) 自我 . 发送 ( @selector_type , line_item ) 其他的 提高 RuntimeError . 新 ( “无效的产品选择器类型” ) 结束 结束 def 标签 ( line_item ) product_tags = line_item . 变体 . 产品 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @ selector & product_tags ). 发送 ( @comparator ) 结束 def 类型 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . product_type . downcase . 带 ) 结束 def 供应商 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . 供应商 . downcase . 带 ) 结束 def product_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . id ) 结束 def variant_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . id ) 结束 def 订阅 ( line_item ) ! line_item . selling_plan_id . nil ? 结束 def 所有 ( line_item ) 真正的 结束 结束 # ================================================================ # DiscountApplicator # #将输入的折扣应用到所提供的行项目。 # ================================================================ 类 DiscountApplicator def 初始化 ( discount_type , discount_amount , discount_message ) @discount_type = discount_type @discount_message = discount_message @discount_amount = 如果 discount_type = = : % 1 - ( discount_amount * 0.01 ) 其他的 钱 . 新 ( 分: One hundred. ) * discount_amount 结束 结束 def 应用 ( line_item ) new_line_price = 如果 @discount_type = = : % line_item . line_price * @discount_amount 其他的 [ line_item . line_price - ( @discount_amount * line_item . 数量 ), 钱 . 零 ]。 马克斯 结束 line_item . change_line_price ( new_line_price , 信息: @discount_message ) 结束 结束 # ================================================================ # BuyXGetYForZCampaign # #购买一定数量的匹配物品,得到一定数量的物品 使用相同匹配项目的#,以应用所输入的折扣。 # ================================================================ 类 BuyXGetYForZCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 ) @campaigns . 每一个 做 | 运动 | product_selector = ProductSelector . 新 ( 运动 [ : product_selector_match_type ), 运动 [ : product_selector_type ), 运动 [ : product_selectors ), ) eligible_items = 车 . line_items . 选择 { | line_item | product_selector . 比赛吗? ( line_item ) } 下一个 如果 eligible_items . nil ? eligible_items = eligible_items . sort_by { | line_item | - line_item . 变体 . 价格 } quantity_to_buy = 运动 [ : quantity_to_buy ] quantity_to_discount = 运动 [ : quantity_to_discount ] bundle_size = quantity_to_buy + quantity_to_discount number_of_bundles = ( eligible_items . 地图 ( & 数量: ). 减少 ( 0 , : + ) / bundle_size ). 地板上 number_of_discountable_items = number_of_bundles * quantity_to_discount 下一个 除非 number_of_discountable_items > 0 discount_applicator = DiscountApplicator . 新 ( 运动 [ : discount_type ), 运动 [ : discount_amount ), 运动 [ : discount_message ] ) 自我 . loop_items ( discount_applicator , 车 , eligible_items , number_of_discountable_items , quantity_to_buy , quantity_to_discount ) 结束 结束 def loop_items ( discount_applicator , 车 , line_items , num_to_discount , quantity_to_buy , quantity_to_discount ) 盈余 = 0 bundle_size = quantity_to_buy + quantity_to_discount line_items . 每一个 做 | line_item | line_quantity = line_item . 数量 + 盈余 如果 line_quantity > quantity_to_buy bundles_per_line = ( line_quantity / bundle_size ). 地板上 take_quantity = bundles_per_line * quantity_to_discount 盈余 + = ( line_quantity - ( bundle_size * bundles_per_line )) 如果 line_item . 数量 > take_quantity discount_item = line_item . 分裂 ( 花: take_quantity ) discount_applicator . 应用 ( discount_item ) 位置 = 车 . line_items . find_index ( line_item ) 车 . line_items . 插入 ( 位置 + 1 , discount_item ) num_to_discount - = take_quantity 其他的 discount_applicator . 应用 ( line_item ) num_to_discount - = line_item . 数量 结束 其他的 盈余 + = line_quantity 结束 打破 如果 num_to_discount < = 0 结束 结束 结束 活动 = [ BuyXGetYForZCampaign . 新 ( BUY_X_GET_Y_FOR_Z ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车
比较不凑合,重复不凑合
Usa este script para ofrecer un descuento en un artículo específico si compraron cierta cantidad de otros artículos。
我爱你,你的朋友们有免费的石灰石también你的帽子,你的帽子,你的太阳。
背板
Este脚本no agregará al carrito los artículos para los que ponga“comppra x, obtén y”;独唱一首歌曲artículos que ya estén en el carrito。
# ================================ 可定制的设置 ================================ # ================================================================ #购买VWX产品,以Z折扣获得Y产品 # #购买一捆特定的物品,以折扣价获得另一件物品。 #例如: # #“买一件t恤、一顶帽子和太阳镜,就能免费得到一双袜子” # # - 'bundle_items'是组成 # bundle,其中: # - 'product_id'是产品的ID # - 'quantity_needed'是完成所需的数量 #捆绑包 # - 'quantity_to_buy'是符合条件的捆绑包数量 #购买折扣产品 # - 'discount_product_selector_match_type #查找与输入匹配或不匹配的产品 #选择器。可以是: # - ':include'检查产品是否匹配 # - ':exclude'以确保产品不匹配 # - 'discount_product_selector_type'决定如何合格 #产品将被识别。可以是: # - ':tag'按标签查找产品 # - ':type'按类型查找产品 # - ':vendor'按供应商查找产品 # - ':product_id'按ID查找产品 # - ':variant_id'通过变量ID查找产品 # - ':subscription'查找订阅产品 # - ':all'用于所有产品 # - 'discount_product_selectors'是一个标识符列表(从 #以上)的合格产品。产品/变体ID列表 #应该只包含数字(例如。没有引号)。如果':all'为 # used,这也可以是'nil'。 # - 'quantity_to_discount'是要折扣的项目数量 每报价# # - 'discount_type'是要提供的折扣类型。可以 #: # - ': % ' # - ':dollar' # - 'discount_amount'是百分比/美元折扣 # apply(每项) # - 'discount_message'是显示折扣时的消息 #被应用 # ================================================================ BUNDLE_DISCOUNTS = [ { bundle_items: [ { product_id: 1234567890987 , quantity_needed: 1 }, { product_id: 1234567890986 , quantity_needed: 1 }, ), quantity_to_buy: 1 , discount_product_selector_match_type:包括 , discount_product_selector_type: product_id , discount_product_selectors: [ 1234567890123 ), quantity_to_discount: 1 , discount_type:百分比 , discount_amount: 10 , discount_message: “购买VWX产品,9折获得Y产品” , }, ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # BundleSelector # #找到所输入的bundle中的任何项目并保存 #。 # ================================================================ 类 BundleSelector def 初始化 ( bundle_items ) @bundle_items = bundle_items . 减少 ({}) 做 | acc , bundle_item | acc [ bundle_item [ : product_id ]] = { cart_items: [], quantity_needed: bundle_item [ : quantity_needed ), total_quantity: 0 , } acc 结束 结束 def 构建 ( 车 ) 车 . line_items . 每一个 做 | line_item | 下一个 除非 @bundle_items [ line_item . 变体 . 产品 . id ] @bundle_items [ line_item . 变体 . 产品 . id ] [ : cart_items ]。 推 ( line_item ) @bundle_items [ line_item . 变体 . 产品 . id ] [ : total_quantity ] + = line_item . 数量 结束 @bundle_items 结束 结束 # ================================================================ # ProductSelector # #根据输入的标准查找匹配的产品。 # ================================================================ 类 ProductSelector def 初始化 ( match_type , selector_type , 选择器 ) @match_type = match_type @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @selector_type = selector_type @ selector = 选择器 结束 def 比赛吗? ( line_item ) 如果 自我 . respond_to吗? ( @selector_type ) 自我 . 发送 ( @selector_type , line_item ) 其他的 提高 RuntimeError . 新 ( “无效的产品选择器类型” ) 结束 结束 def 标签 ( line_item ) product_tags = line_item . 变体 . 产品 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @ selector & product_tags ). 发送 ( @comparator ) 结束 def 类型 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . product_type . downcase . 带 ) 结束 def 供应商 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . 供应商 . downcase . 带 ) 结束 def product_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . id ) 结束 def variant_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . id ) 结束 def 订阅 ( line_item ) ! line_item . selling_plan_id . nil ? 结束 def 所有 ( line_item ) 真正的 结束 结束 # ================================================================ # DiscountApplicator # #将输入的折扣应用到所提供的行项目。 # ================================================================ 类 DiscountApplicator def 初始化 ( discount_type , discount_amount , discount_message ) @discount_type = discount_type @discount_message = discount_message @discount_amount = 如果 discount_type = = : % 1 - ( discount_amount * 0.01 ) 其他的 钱 . 新 ( 分: One hundred. ) * discount_amount 结束 结束 def 应用 ( line_item ) new_line_price = 如果 @discount_type = = : % line_item . line_price * @discount_amount 其他的 [ line_item . line_price - ( @discount_amount * line_item . 数量 ), 钱 . 零 ]。 马克斯 结束 line_item . change_line_price ( new_line_price , 信息: @discount_message ) 结束 结束 # ================================================================ # DiscountLoop # #循环所提供的行项并对所提供的行项进行折扣 按所提供的折扣编号。 # ================================================================ 类 DiscountLoop def 初始化 ( discount_applicator ) @discount_applicator = discount_applicator 结束 def loop_items ( 车 , line_items , num_to_discount ) line_items . each_with_index 做 | line_item | 打破 如果 num_to_discount < = 0 如果 line_item . 数量 > num_to_discount split_line_item = line_item . 分裂 ( 花: num_to_discount ) @discount_applicator . 应用 ( split_line_item ) 位置 = 车 . line_items . find_index ( line_item ) 车 . line_items . 插入 ( 位置 + 1 , split_line_item ) 打破 其他的 @discount_applicator . 应用 ( line_item ) num_to_discount - = line_item . 数量 结束 结束 结束 结束 # ================================================================ # BundleDiscountCampaign # #如果输入的bundle存在,则输入的折扣为 #应用到输入的产品。 # ================================================================ 类 BundleDiscountCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 ) @campaigns . 每一个 做 | 运动 | bundle_selector = BundleSelector . 新 ( 运动 [ : bundle_items ]) bundle_items = bundle_selector . 构建 ( 车 ) 下一个 如果 bundle_items . 任何? 做 | product_id , product_info | product_info [ : total_quantity ] < product_info [ : quantity_needed ] 结束 num_bundles = bundle_items . 地图 做 | product_id , product_info | ( product_info [ : total_quantity ] / product_info [ : quantity_needed ]) 结束 num_bundles = num_bundles . 最小值 . 地板上 product_selector = ProductSelector . 新 ( 运动 [ : discount_product_selector_match_type ), 运动 [ : discount_product_selector_type ), 运动 [ : discount_product_selectors ), ) discount_items = 车 . line_items . 选择 { | line_item | product_selector . 比赛吗? ( line_item ) } 下一个 如果 discount_items . nil ? discount_applicator = DiscountApplicator . 新 ( 运动 [ : discount_type ), 运动 [ : discount_amount ), 运动 [ : discount_message ] ) discount_loop = DiscountLoop . 新 ( discount_applicator ) discount_loop . loop_items ( 车 , discount_items , ( 运动 [ : quantity_to_discount ] * num_bundles )) 结束 结束 结束 活动 = [ BundleDiscountCampaign . 新 ( BUNDLE_DISCOUNTS ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车
Descuento por paquete
Usa este script para ofrecer un descucuento cuando se agrega un conjunto específico de productos al carrito。
我爱你,我的朋友们有20%的机会和你商量,你的墨西哥帽和你的阳光。
# ================================ 可定制的设置 ================================ # ================================================================ #购买WXY产品,获得Z折扣 # #购买一捆特定的产品,以a的价格购买 #折扣。例如: # #“买一件t恤、一顶帽子和太阳镜,每件都打八折” # # - 'bundle_items'是组成 # bundle,其中: # - 'product_id'是产品的ID # - 'quantity_needed'是完成所需的数量 #捆绑包 # - 'discount_type'是要提供的折扣类型。可以 #: # - ': % ' # - ':dollar' # - 'discount_amount'是百分比/美元折扣 # apply(每项) # - 'discount_message'是显示折扣时的消息 #被应用 # ================================================================ BUNDLE_DISCOUNTS = [ { bundle_items: [ { product_id: 1234567890987 , quantity_needed: 1 }, { product_id: 1234567890986 , quantity_needed: 1 }, ), discount_type:百分比 , discount_amount: 10 , discount_message: “购买X产品和Y产品,可以打九折!” , }, ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # BundleSelector # #找到所输入的bundle中的任何项目并保存 #。 # ================================================================ 类 BundleSelector def 初始化 ( bundle_items ) @bundle_items = bundle_items . 减少 ({}) 做 | acc , bundle_item | acc [ bundle_item [ : product_id ]] = { cart_items: [], quantity_needed: bundle_item [ : quantity_needed ), total_quantity: 0 , } acc 结束 结束 def 构建 ( 车 ) 车 . line_items . 每一个 做 | line_item | 下一个 如果 line_item . line_price_changed吗? 下一个 除非 @bundle_items [ line_item . 变体 . 产品 . id ] @bundle_items [ line_item . 变体 . 产品 . id ] [ : cart_items ]。 推 ( line_item ) @bundle_items [ line_item . 变体 . 产品 . id ] [ : total_quantity ] + = line_item . 数量 结束 @bundle_items 结束 结束 # ================================================================ # DiscountApplicator # #将输入的折扣应用到所提供的行项目。 # ================================================================ 类 DiscountApplicator def 初始化 ( discount_type , discount_amount , discount_message ) @discount_type = discount_type @discount_message = discount_message @discount_amount = 如果 discount_type = = : % 1 - ( discount_amount * 0.01 ) 其他的 钱 . 新 ( 分: One hundred. ) * discount_amount 结束 结束 def 应用 ( line_item ) new_line_price = 如果 @discount_type = = : % line_item . line_price * @discount_amount 其他的 [ line_item . line_price - ( @discount_amount * line_item . 数量 ), 钱 . 零 ]。 马克斯 结束 line_item . change_line_price ( new_line_price , 信息: @discount_message ) 结束 结束 # ================================================================ # DiscountLoop # #循环所提供的行项并对所提供的行项进行折扣 按所提供的折扣编号。 # ================================================================ 类 DiscountLoop def 初始化 ( discount_applicator ) @discount_applicator = discount_applicator 结束 def loop_items ( 车 , line_items , num_to_discount ) line_items . each_with_index 做 | line_item | 打破 如果 num_to_discount < = 0 如果 line_item . 数量 > num_to_discount split_line_item = line_item . 分裂 ( 花: num_to_discount ) @discount_applicator . 应用 ( split_line_item ) 位置 = 车 . line_items . find_index ( line_item ) 车 . line_items . 插入 ( 位置 + 1 , split_line_item ) 打破 其他的 @discount_applicator . 应用 ( line_item ) num_to_discount - = line_item . 数量 结束 结束 结束 结束 # ================================================================ # BundleDiscountCampaign # #如果输入的bundle存在,则输入的折扣为 #应用到bundle中的每个项目。 # ================================================================ 类 BundleDiscountCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 ) @campaigns . 每一个 做 | 运动 | bundle_selector = BundleSelector . 新 ( 运动 [ : bundle_items ]) bundle_items = bundle_selector . 构建 ( 车 ) 下一个 如果 bundle_items . 任何? 做 | product_id , product_info | product_info [ : total_quantity ] < product_info [ : quantity_needed ] 结束 num_bundles = bundle_items . 地图 做 | product_id , product_info | ( product_info [ : total_quantity ] / product_info [ : quantity_needed ]) 结束 num_bundles = num_bundles . 最小值 . 地板上 discount_applicator = DiscountApplicator . 新 ( 运动 [ : discount_type ), 运动 [ : discount_amount ), 运动 [ : discount_message ] ) discount_loop = DiscountLoop . 新 ( discount_applicator ) bundle_items . 每一个 做 | product_id , product_info | discount_loop . loop_items ( 车 , product_info [ : cart_items ), ( product_info [ : quantity_needed ] * num_bundles ), ) 结束 结束 结束 结束 活动 = [ BundleDiscountCampaign . 新 ( BUNDLE_DISCOUNTS ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车
Descuento de dos por uno
美国este脚本para ofrecer un descucuento porcentual en un artículo cuando un client comppra una cantida determinada de otro producto。
我的朋友,我的朋友,我的朋友,我的朋友,我的朋友,我的朋友。
背板
Este脚本no agregará al carrito los artículos para los que ponga“comppra x, obtén y”;独唱一首歌曲artículos que ya estén en el carrito。
# ================================ 可定制的设置 ================================ # ================================================================ #购买W产品V,以Z折扣获得Y产品X # #购买一定数量的匹配物品,得到一定数量的 #一组不同的匹配项目与输入的折扣 #应用。例如: # #“买两件t恤,打九折送一顶帽子” # # - 'buy_product_selector_match_type'决定我们是否查看 #用于与输入的选择器匹配或不匹配的产品。 #可以是: # - ':include'检查产品是否匹配 # - ':exclude'以确保产品不匹配 # - 'buy_product_selector_type'确定合格的产品 #将被识别。可以是: # - ':tag'按标签查找产品 # - ':type'按类型查找产品 # - ':vendor'按供应商查找产品 # - ':product_id'按ID查找产品 # - ':variant_id'通过变量ID查找产品 # - ':subscription'查找订阅产品 # - ':all'用于所有产品 # - 'buy_product_selectors'是一个标识符列表(从上面) #用于合格产品。产品/变体ID列表应该只 #包含数字(例如。没有引号)。如果使用':all',则此 #也可以是“nil”。 # - 'quantity_to_buy'是需要购买的产品数量 #合格 # -“get_selector_match_type”与“Buy”相同 #版本以上 # -“get_product_selector_type”与“Buy”相同 #版本以上 # - 'get_product_selectors'和' Buy '的意思相同 #版本以上 # - 'quantity_to_discount'是要打折的产品数量 # - 'allow_incomplete_bundle'确定是否部分 #商品要打折,可以打折,也可以全部打折 #需要在场。可以是: # - 'true' # - 'false' # - 'discount_type'是要提供的折扣类型。可以 #: # - ': % ' # - ':dollar' # - 'discount_amount'是百分比/美元折扣 # apply(每项) # - 'discount_message'是显示折扣时的消息 #被应用 # ================================================================ BUYVOFW_GETXOFY_FORZ = [ { buy_product_selector_match_type:包括 , buy_product_selector_type:标签 , buy_product_selectors: [ “your_tag” , “another_tag” ), quantity_to_buy: 1 , get_product_selector_match_type:包括 , get_product_selector_type:标签 , get_product_selectors: [ “your_other_tag” , “a_different_tag” ), quantity_to_discount: 1 , allow_incomplete_bundle: 假 , discount_type:百分比 , discount_amount: One hundred. , discount_message: “买X产品,免费送Y产品!” , }, { buy_product_selector_match_type:包括 , buy_product_selector_type: product_id , buy_product_selectors: [ 1234567890987 , 1234567890986 ), quantity_to_buy: 1 , get_product_selector_match_type:包括 , get_product_selector_type: product_id , get_product_selectors: [ 1234567890985 , 1234567890984 ), quantity_to_discount: 1 , allow_incomplete_bundle: 假 , discount_type:美元 , discount_amount: 10 , discount_message: “买X产品,Y产品就能减价10美元!” , }, ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # ProductSelector # #根据输入的标准查找匹配的产品。 # ================================================================ 类 ProductSelector def 初始化 ( match_type , selector_type , 选择器 ) @match_type = match_type @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @selector_type = selector_type @ selector = 选择器 结束 def 比赛吗? ( line_item ) 如果 自我 . respond_to吗? ( @selector_type ) 自我 . 发送 ( @selector_type , line_item ) 其他的 提高 RuntimeError . 新 ( “无效的产品选择器类型” ) 结束 结束 def 标签 ( line_item ) product_tags = line_item . 变体 . 产品 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @ selector & product_tags ). 发送 ( @comparator ) 结束 def 类型 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . product_type . downcase . 带 ) 结束 def 供应商 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . 供应商 . downcase . 带 ) 结束 def product_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . id ) 结束 def variant_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . id ) 结束 def 订阅 ( line_item ) ! line_item . selling_plan_id . nil ? 结束 def 所有 ( line_item ) 真正的 结束 结束 # ================================================================ # DiscountApplicator # #将输入的折扣应用到所提供的行项目。 # ================================================================ 类 DiscountApplicator def 初始化 ( discount_type , discount_amount , discount_message ) @discount_type = discount_type @discount_message = discount_message @discount_amount = 如果 discount_type = = : % 1 - ( discount_amount * 0.01 ) 其他的 钱 . 新 ( 分: One hundred. ) * discount_amount 结束 结束 def 应用 ( line_item ) new_line_price = 如果 @discount_type = = : % line_item . line_price * @discount_amount 其他的 [ line_item . line_price - ( @discount_amount * line_item . 数量 ), 钱 . 零 ]。 马克斯 结束 line_item . change_line_price ( new_line_price , 信息: @discount_message ) 结束 结束 # ================================================================ # DiscountLoop # #循环所提供的行项并对所提供的行项进行折扣 按所提供的折扣编号。 # ================================================================ 类 DiscountLoop def 初始化 ( discount_applicator ) @discount_applicator = discount_applicator 结束 def loop_items ( 车 , line_items , num_to_discount ) line_items . 每一个 做 | line_item | 打破 如果 num_to_discount < = 0 如果 line_item . 数量 > num_to_discount split_line_item = line_item . 分裂 ( 花: num_to_discount ) @discount_applicator . 应用 ( split_line_item ) 位置 = 车 . line_items . find_index ( line_item ) 车 . line_items . 插入 ( 位置 + 1 , split_line_item ) 打破 其他的 @discount_applicator . 应用 ( line_item ) num_to_discount - = line_item . 数量 结束 结束 结束 结束 # ================================================================ # BuyVofWGetXofYForZCampaign # #购买一定数量的匹配物品,得到一定数量的 #一组不同的匹配项目与输入的折扣 #应用。 # ================================================================ 类 BuyVofWGetXofYForZCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 ) @campaigns . 每一个 做 | 运动 | buy_product_selector = ProductSelector . 新 ( 运动 [ : buy_product_selector_match_type ), 运动 [ : buy_product_selector_type ), 运动 [ : buy_product_selectors ), ) get_product_selector = ProductSelector . 新 ( 运动 [ : get_product_selector_match_type ), 运动 [ : get_product_selector_type ), 运动 [ : get_product_selectors ), ) buy_items = [] get_item = [] 车 . line_items . 每一个 做 | line_item | buy_items . 推 ( line_item ) 如果 buy_product_selector . 比赛吗? ( line_item ) get_item . 推 ( line_item ) 如果 get_product_selector . 比赛吗? ( line_item ) 结束 下一个 如果 buy_items . 空的吗? || get_item . 空的吗? get_item = get_item . sort_by { | line_item | line_item . 变体 . 价格 } quantity_to_buy = 运动 [ : quantity_to_buy ] quantity_to_discount = 运动 [ : quantity_to_discount ] buy_offers = ( buy_items . 地图 ( & 数量: ). 减少 ( 0 , : + ) / quantity_to_buy ). 地板上 如果 运动 [ : allow_incomplete_bundle ] number_of_bundles = buy_offers 其他的 get_offers = ( get_item . 地图 ( & 数量: ). 减少 ( 0 , : + ) / quantity_to_discount ). 地板上 number_of_bundles = [ buy_offers , get_offers ]。 最小值 结束 number_of_discountable_items = number_of_bundles * quantity_to_discount 下一个 除非 number_of_discountable_items > 0 discount_applicator = DiscountApplicator . 新 ( 运动 [ : discount_type ), 运动 [ : discount_amount ), 运动 [ : discount_message ] ) discount_loop = DiscountLoop . 新 ( discount_applicator ) discount_loop . loop_items ( 车 , get_item , number_of_discountable_items ) 结束 结束 结束 活动 = [ BuyVofWGetXofYForZCampaign . 新 ( BUYVOFW_GETXOFY_FORZ ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车
comppra una悬臂específica de un producto por un monto específico
Usa este script para ofrecer una cantidad de productos por un preco específico。
Por ejemplo, ofrece a los clientes 2 camisetas, 20美元。
# ================================ 可定制的设置 ================================ # ================================================================ #花Z美元购买Y产品的X # #以特定价格购买特定数量的匹配物品。 #例如: # “20美元买两件t恤” # # - 'product_selector_match_type'决定我们是否寻找 #与输入选择器匹配或不匹配的产品。可以 号是: # - ':include'检查产品是否匹配 # - ':exclude'以确保产品不匹配 # - 'product_selector_type'决定产品的合格程度 #将被识别。可以是: # - ':tag'按标签查找产品 # - ':type'按类型查找产品 # - ':vendor'按供应商查找产品 # - ':product_id'按ID查找产品 # - ':variant_id'通过变量ID查找产品 # - ':subscription'查找订阅产品 # - ':all'用于所有产品 # - 'product_selectors'是一个标识符列表(从上面) #用于合格产品。产品/变体ID列表应该 #只包含数字(例如。没有引号)。如果使用':all', # this也可以是'nil'。 # - 'quantity_to_buy'是需要购买的产品数量 #合格 # - 'final_price '是所有产品的收费 #是报价的一部分 # - 'discount_message'是显示折扣时的消息 #被应用 # ================================================================ BUY_X_GET_Y_FOR_Z = [ { product_selector_match_type:包括 , product_selector_type:标签 , product_selectors: [ “your_tag” ), quantity_to_buy: 2 , final_price: One hundred. , discount_message: “20美元买两个” , }, ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # ProductSelector # #根据输入的标准查找匹配的产品。 # ================================================================ 类 ProductSelector def 初始化 ( match_type , selector_type , 选择器 ) @match_type = match_type @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @selector_type = selector_type @ selector = 选择器 结束 def 比赛吗? ( line_item ) 如果 自我 . respond_to吗? ( @selector_type ) 自我 . 发送 ( @selector_type , line_item ) 其他的 提高 RuntimeError . 新 ( “无效的产品选择器类型” ) 结束 结束 def 标签 ( line_item ) product_tags = line_item . 变体 . 产品 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @ selector & product_tags ). 发送 ( @comparator ) 结束 def 类型 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . product_type . downcase . 带 ) 结束 def 供应商 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . 供应商 . downcase . 带 ) 结束 def product_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . id ) 结束 def variant_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . id ) 结束 def 订阅 ( line_item ) ! line_item . selling_plan_id . nil ? 结束 def 所有 ( line_item ) 真正的 结束 结束 # ================================================================ # DollarDiscountApplicator # #将输入的折扣应用到所提供的行项目。 # ================================================================ 类 DollarDiscountApplicator def 初始化 ( discount_message ) @discount_message = discount_message 结束 def 应用 ( line_item , discount_amount ) new_line_price = line_item . line_price - discount_amount line_item . change_line_price ( new_line_price , 信息: @discount_message ) 结束 结束 # ================================================================ # BuyXOfYForZCampaign # #以特定价格购买特定数量的匹配物品。 # ================================================================ 类 BuyXOfYForZCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 ) @campaigns . 每一个 做 | 运动 | product_selector = ProductSelector . 新 ( 运动 [ : product_selector_match_type ), 运动 [ : product_selector_type ), 运动 [ : product_selectors ), ) eligible_items = 车 . line_items . 选择 { | line_item | product_selector . 比赛吗? ( line_item ) } 下一个 如果 eligible_items . nil ? eligible_item_count = eligible_items . 地图 ( & 数量: ). 减少 ( 0 , : + ) quantity_to_buy = 运动 [ : quantity_to_buy ] number_of_offers = ( eligible_item_count / quantity_to_buy ). 地板上 下一个 除非 number_of_offers > 0 number_of_discountable_items = number_of_offers * quantity_to_buy total_offer_price = 钱 . 新 ( 分: One hundred. ) * ( number_of_offers * 运动 [ : final_price ]) discount_applicator = DollarDiscountApplicator . 新 ( 运动 [ : discount_message ]) 自我 . loop_items ( 车 , eligible_items , number_of_discountable_items , total_offer_price , discount_applicator ) 结束 结束 def loop_items ( 车 , line_items , num_to_discount , total_price , discount_applicator ) current_price = 钱 . 零 avg_price = total_price * ( 1 / num_to_discount ) line_items = line_items . sort_by { | line_item | line_item . 变体 . 价格 } line_items . 每一个 做 | line_item | 打破 如果 num_to_discount < = 0 如果 line_item . 数量 > num_to_discount split_line_item = line_item . 分裂 ( 花: num_to_discount ) discount_amount = split_line_item . line_price - ( total_price - current_price ) discount_applicator . 应用 ( split_line_item , discount_amount ) 位置 = 车 . line_items . find_index ( line_item ) 车 . line_items . 插入 ( 位置 + 1 , split_line_item ) 打破 elsif line_item . 数量 = = num_to_discount discount_amount = line_item . line_price - ( total_price - current_price ) discount_applicator . 应用 ( line_item , discount_amount ) 打破 其他的 如果 line_item . 变体 . 价格 < = avg_price current_price + = line_item . line_price 其他的 discount_amount = ( line_item . 变体 . 价格 - avg_price ) * line_item . 数量 current_price + = ( line_item . line_price - discount_amount ) discount_applicator . 应用 ( line_item , discount_amount ) 结束 num_to_discount - = line_item . 数量 结束 结束 结束 结束 活动 = [ BuyXOfYForZCampaign . 新 ( BUY_X_GET_Y_FOR_Z ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车
我无钱可赔
Usa este script para ofrecer un descuento en un producto específico si el total carrito mayor que un monto determinado。
Por ejemplo, ofrece a los clients un regalo gratis si gastan más de $75。
背板
Este脚本no agregará al carrito los artículos para los que ponga“comppra x, obtén y”;独唱一首歌曲artículos que ya estén en el carrito。
# ================================ 可定制的设置 ================================ # ================================================================ #花X美元,以Z折扣获得Y产品 # #如果购物车总数大于(或等于)输入的 #阈值(减去折扣金额),则输入的 #匹配项将按输入的金额折扣价。 # # - 'product_selector_match_type'决定我们是否寻找 #与输入选择器匹配或不匹配的产品。可以 号是: # - ':include'检查产品是否匹配 # - ':exclude'以确保产品不匹配 # - 'product_selector_type'决定产品的合格程度 #将被识别。可以是: # - ':tag'按标签查找产品 # - ':type'按类型查找产品 # - ':vendor'按供应商查找产品 # - ':product_id'按ID查找产品 # - ':variant_id'通过变量ID查找产品 # - ':subscription'查找订阅产品 # - ':all'用于所有产品 # - 'product_selectors'是一个标识符列表(从上面) #用于合格产品。产品/变体ID列表应该 #只包含数字(例如。没有引号)。如果使用':all', # this也可以是'nil'。 # -“threshold”是符合资格所需花费的金额 # - 'quantity_to_discount'是要折扣的项目数量 #如果合格 # - 'discount_type'是要提供的折扣类型。可以 #: # - ': % ' # - ':dollar' # - 'discount_amount'是百分比/美元折扣 # apply(每项) # - 'discount_message'是显示折扣时的消息 #被应用 # ================================================================ SPENDX_GETY_FORZ = [ { product_selector_match_type:包括 , product_selector_type: product_id , product_selectors: [ 1234567890123 ), 阈值: 75 , quantity_to_discount: 1 , discount_type:百分比 , discount_amount: One hundred. , discount_message: “花75美元或更多就能免费获得X产品!” , }, ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # ProductSelector # #根据输入的标准查找匹配的产品。 # ================================================================ 类 ProductSelector def 初始化 ( match_type , selector_type , 选择器 ) @match_type = match_type @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @selector_type = selector_type @ selector = 选择器 结束 def 比赛吗? ( line_item ) 如果 自我 . respond_to吗? ( @selector_type ) 自我 . 发送 ( @selector_type , line_item ) 其他的 提高 RuntimeError . 新 ( “无效的产品选择器类型” ) 结束 结束 def 标签 ( line_item ) product_tags = line_item . 变体 . 产品 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @ selector & product_tags ). 发送 ( @comparator ) 结束 def 类型 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . product_type . downcase . 带 ) 结束 def 供应商 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . 供应商 . downcase . 带 ) 结束 def product_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . id ) 结束 def variant_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . id ) 结束 def 订阅 ( line_item ) ! line_item . selling_plan_id . nil ? 结束 def 所有 ( line_item ) 真正的 结束 结束 # ================================================================ # DiscountApplicator # #将输入的折扣应用到所提供的行项目。 # ================================================================ 类 DiscountApplicator def 初始化 ( discount_type , discount_amount , discount_message ) @discount_type = discount_type @discount_message = discount_message @discount_amount = 如果 discount_type = = : % 1 - ( discount_amount * 0.01 ) 其他的 钱 . 新 ( 分: One hundred. ) * discount_amount 结束 结束 def 应用 ( line_item ) new_line_price = 如果 @discount_type = = : % line_item . line_price * @discount_amount 其他的 [ line_item . line_price - ( @discount_amount * line_item . 数量 ), 钱 . 零 ]。 马克斯 结束 line_item . change_line_price ( new_line_price , 信息: @discount_message ) 结束 结束 # ================================================================ # DiscountLoop # #循环所提供的行项并对所提供的行项进行折扣 按所提供的折扣编号。 # ================================================================ 类 DiscountLoop def 初始化 ( discount_applicator ) @discount_applicator = discount_applicator 结束 def loop_items ( 车 , line_items , num_to_discount ) line_items . 每一个 做 | line_item | 打破 如果 num_to_discount < = 0 如果 line_item . 数量 > num_to_discount split_line_item = line_item . 分裂 ( 花: num_to_discount ) @discount_applicator . 应用 ( split_line_item ) 位置 = 车 . line_items . find_index ( line_item ) 车 . line_items . 插入 ( 位置 + 1 , split_line_item ) 打破 其他的 @discount_applicator . 应用 ( line_item ) num_to_discount - = line_item . 数量 结束 结束 结束 结束 # ================================================================ # SpendXGetYForZCampaign # #如果购物车总数大于(或等于)输入的 #阈值(减去折扣金额),则输入的 #匹配项将按输入的金额折扣价。 # ================================================================ 类 SpendXGetYForZCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 ) @campaigns . 每一个 做 | 运动 | 阈值 = 钱 . 新 ( 分: One hundred. ) * 运动 [ :阈值 ] 下一个 如果 车 . subtotal_price < 阈值 product_selector = ProductSelector . 新 ( 运动 [ : product_selector_match_type ), 运动 [ : product_selector_type ), 运动 [ : product_selectors ), ) eligible_items = 车 . line_items . 选择 { | line_item | product_selector . 比赛吗? ( line_item ) } 下一个 如果 eligible_items . nil ? eligible_items = eligible_items . sort_by { | line_item | line_item . 变体 . 价格 } num_to_discount = 运动 [ : quantity_to_discount ] cart_total = 车 . subtotal_price eligible_items . 每一个 做 | line_item | 打破 如果 num_to_discount < = 0 如果 line_item . 数量 > num_to_discount cart_total - = line_item . 变体 . 价格 * num_to_discount 打破 其他的 cart_total - = line_item . line_price num_to_discount - = line_item . 数量 结束 结束 下一个 如果 cart_total < 阈值 discount_applicator = discount_applicator = DiscountApplicator . 新 ( 运动 [ : discount_type ), 运动 [ : discount_amount ), 运动 [ : discount_message ] ) discount_loop = DiscountLoop . 新 ( discount_applicator ) discount_loop . loop_items ( 车 , eligible_items , 运动 [ : quantity_to_discount ]) 结束 结束 结束 活动 = [ SpendXGetYForZCampaign . 新 ( SPENDX_GETY_FORZ ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车
客户的生产礼仪
Usa este script para ofrecer un descuento en productos específicos a clientes con etiquette as específicas。
我有礼貌,我有20%的礼貌是我的客户<代码>贵宾代码>.
# ================================ 可定制的设置 ================================ # ================================================================ #产品折扣按客户标签 # 如果我们有一个匹配的客户(通过标签),输入的折扣 #将应用于任何匹配项。 # # - 'customer_tag_match_type'决定我们是否寻找客户 #是否使用输入的标签进行标记。可以是: # - ':include'检查客户是否被标记 # - ':exclude'以确保客户没有被标记 # - 'customer_tags'是用于识别合格标签的列表 #客户 # - 'product_selector_match_type'决定我们是否寻找 #与输入选择器匹配或不匹配的产品。可以 号是: # - ':include'检查产品是否匹配 # - ':exclude'以确保产品不匹配 # - 'product_selector_type'决定产品的合格程度 #将被识别。可以是: # - ':tag'按标签查找产品 # - ':type'按类型查找产品 # - ':vendor'按供应商查找产品 # - ':product_id'按ID查找产品 # - ':variant_id'通过变量ID查找产品 # - ':subscription'查找订阅产品 # - ':all'用于所有产品 # - 'product_selectors'是一个标识符列表(从上面) #用于合格产品。产品/变体ID列表应该 #只包含数字(例如。没有引号)。如果使用':all', # this也可以是'nil'。 # - 'discount_type'是要提供的折扣类型。可以 #: # - ': % ' # - ':dollar' # - 'discount_amount'是百分比/美元折扣 # apply(每项) # - 'discount_message'是显示折扣时的消息 #被应用 # ================================================================ DISCOUNTS_FOR_CUSTOMER_TAG = [ { customer_tag_match_type:包括 , customer_tags: [ “贵宾” ), product_selector_match_type:包括 , product_selector_type:: , product_selectors: 零 , discount_type:百分比 , discount_amount: 20. , discount_message: “VIP客户有折扣!” , }, ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # CustomerTagSelector # #查找所提供的客户是否有任何输入的标记。 # ================================================================ 类 CustomerTagSelector def 初始化 ( match_type , 标签 ) @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @ tags = 标签 . 地图 { | 标签 | 标签 . downcase . 带 } 结束 def 比赛吗? ( 客户 ) customer_tags = 客户 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } ( @ tags & customer_tags ). 发送 ( @comparator ) 结束 结束 # ================================================================ # ProductSelector # #根据输入的标准查找匹配的产品。 # ================================================================ 类 ProductSelector def 初始化 ( match_type , selector_type , 选择器 ) @match_type = match_type @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @selector_type = selector_type @ selector = 选择器 结束 def 比赛吗? ( line_item ) 如果 自我 . respond_to吗? ( @selector_type ) 自我 . 发送 ( @selector_type , line_item ) 其他的 提高 RuntimeError . 新 ( “无效的产品选择器类型” ) 结束 结束 def 标签 ( line_item ) product_tags = line_item . 变体 . 产品 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @ selector & product_tags ). 发送 ( @comparator ) 结束 def 类型 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . product_type . downcase . 带 ) 结束 def 供应商 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . 供应商 . downcase . 带 ) 结束 def product_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . id ) 结束 def variant_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . id ) 结束 def 订阅 ( line_item ) ! line_item . selling_plan_id . nil ? 结束 def 所有 ( line_item ) 真正的 结束 结束 # ================================================================ # DiscountApplicator # #将输入的折扣应用到所提供的行项目。 # ================================================================ 类 DiscountApplicator def 初始化 ( discount_type , discount_amount , discount_message ) @discount_type = discount_type @discount_message = discount_message @discount_amount = 如果 discount_type = = : % 1 - ( discount_amount * 0.01 ) 其他的 钱 . 新 ( 分: One hundred. ) * discount_amount 结束 结束 def 应用 ( line_item ) new_line_price = 如果 @discount_type = = : % line_item . line_price * @discount_amount 其他的 [ line_item . line_price - ( @discount_amount * line_item . 数量 ), 钱 . 零 ]。 马克斯 结束 line_item . change_line_price ( new_line_price , 信息: @discount_message ) 结束 结束 # ================================================================ # DiscountForCustomerTagCampaign # 如果我们有一个匹配的客户(通过标签),输入的折扣 #应用于任何匹配项。 # ================================================================ 类 DiscountForCustomerTagCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 ) 返回 除非 车 . 客户 & . 标签 @campaigns . 每一个 做 | 运动 | customer_tag_selector = CustomerTagSelector . 新 ( 运动 [ : customer_tag_match_type ), 运动 [ : customer_tags ]) 下一个 除非 customer_tag_selector . 比赛吗? ( 车 . 客户 ) product_selector = ProductSelector . 新 ( 运动 [ : product_selector_match_type ), 运动 [ : product_selector_type ), 运动 [ : product_selectors ] ) discount_applicator = DiscountApplicator . 新 ( 运动 [ : discount_type ), 运动 [ : discount_amount ), 运动 [ : discount_message ] ) 车 . line_items . 每一个 做 | line_item | 下一个 除非 product_selector . 比赛吗? ( line_item ) discount_applicator . 应用 ( line_item ) 结束 结束 结束 结束 活动 = [ DiscountForCustomerTagCampaign . 新 ( DISCOUNTS_FOR_CUSTOMER_TAG ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车
Descuento de producto según ob欧宝娱乐app下载地址marketing de clients
Usa este script para ofrecer un descuento en productos específicos a los clientes que accept mob欧宝娱乐app下载地址arketing。
在接受市场的情况下,有10%的产品与客户之间的关系。ob欧宝娱乐app下载地址
# ================================ 可定制的设置 ================================ # ================================================================ #客户营销的产品折扣ob欧宝娱乐app下载地址 # #如果客户接受营销,则任何匹配的项目都是ob欧宝娱乐app下载地址 #以输入的金额折现。 # # - 'product_selector_match_type'决定我们是否寻找 #与输入选择器匹配或不匹配的产品。可以 号是: # - ':include'检查产品是否匹配 # - ':exclude'以确保产品不匹配 # - 'product_selector_type'决定产品的合格程度 #将被识别。可以是: # - ':tag'按标签查找产品 # - ':type'按类型查找产品 # - ':vendor'按供应商查找产品 # - ':product_id'按ID查找产品 # - ':variant_id'通过变量ID查找产品 # - ':subscription'查找订阅产品 # - ':all'用于所有产品 # - 'product_selectors'是一个标识符列表(从上面) #用于合格产品。产品/变体ID列表应该 #只包含数字(例如。没有引号)。如果使用':all', # this也可以是'nil'。 # - 'discount_type'是要提供的折扣类型。可以 #: # - ': % ' # - ':dollar' # - 'discount_amount'是百分比/美元折扣 # apply(每项) # - 'discount_message'是显示折扣时的消息 #被应用 # ================================================================ PRODUCT_DISCOUNTS_BY_CUSTOMER_ob欧宝娱乐app下载地址MARKETING = [ { product_selector_match_type:包括 , product_selector_type:: , product_selectors: 零 , discount_type:百分比 , discount_amount: 10 , discount_message: “订阅客户9折优惠!” } ] # ================================ 脚本代码(不要编辑 ) =============================== # ================================================================ # ProductSelector # #根据输入的标准查找匹配的产品。 # ================================================================ 类 ProductSelector def 初始化 ( match_type , selector_type , 选择器 ) @match_type = match_type @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @selector_type = selector_type @ selector = 选择器 结束 def 比赛吗? ( line_item ) 如果 自我 . respond_to吗? ( @selector_type ) 自我 . 发送 ( @selector_type , line_item ) 其他的 提高 RuntimeError . 新 ( “无效的产品选择器类型” ) 结束 结束 def 标签 ( line_item ) product_tags = line_item . 变体 . 产品 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @ selector & product_tags ). 发送 ( @comparator ) 结束 def 类型 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . product_type . downcase . 带 ) 结束 def 供应商 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . 供应商 . downcase . 带 ) 结束 def product_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . id ) 结束 def variant_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . id ) 结束 def 订阅 ( line_item ) ! line_item . selling_plan_id . nil ? 结束 def 所有 ( line_item ) 真正的 结束 结束 # ================================================================ # DiscountApplicator # #将输入的折扣应用到所提供的行项目。 # ================================================================ 类 DiscountApplicator def 初始化 ( discount_type , discount_amount , discount_message ) @discount_type = discount_type @discount_message = discount_message @discount_amount = 如果 discount_type = = : % 1 - ( discount_amount * 0.01 ) 其他的 钱 . 新 ( 分: One hundred. ) * discount_amount 结束 结束 def 应用 ( line_item ) new_line_price = 如果 @discount_type = = : % line_item . line_price * @discount_amount 其他的 [ line_item . line_price - ( @discount_amount * line_item . 数量 ), 钱 . 零 ]。 马克斯 结束 line_item . change_line_price ( new_line_price , 信息: @discount_message ) 结束 结束 # ================================================================ # ProductDiscountByCustomerob欧宝娱乐app下载地址MarketingCampaign # #如果客户接受营销,则任何匹配的项目都是ob欧宝娱乐app下载地址 #以输入的金额折现。 # ================================================================ 类 ProductDiscountByCustomerob欧宝娱乐app下载地址MarketingCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 ) 返回 如果 车 . 客户 . nil ? @campaigns . 每一个 做 | 运动 | 下一个 除非 车 . 客户 . accepts_ob欧宝娱乐app下载地址marketing吗? product_selector = ProductSelector . 新 ( 运动 [ : product_selector_match_type ), 运动 [ : product_selector_type ), 运动 [ : product_selectors ] ) discount_applicator = DiscountApplicator . 新 ( 运动 [ : discount_type ), 运动 [ : discount_amount ), 运动 [ : discount_message ] ) 车 . line_items . 每一个 做 | line_item | 下一个 除非 product_selector . 比赛吗? ( line_item ) discount_applicator . 应用 ( line_item ) 结束 结束 结束 结束 活动 = [ ProductDiscountByCustomerob欧宝娱乐app下载地址MarketingCampaign . 新 ( PRODUCT_DISCOUNTS_BY_CUSTOMER_ob欧宝娱乐app下载地址MARKETING ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车
Descuento de producto según recuento de pedidos de clients
Usa este script para ofrecer un descucuento en productos específicos para clients con un recuento de pedidos específico。
我有我的孩子,我有10%的孩子有我的孩子。
# ================================ 可定制的设置 ================================ # ================================================================ #产品折扣按订单计数 # #如果客户已经下了匹配数量的订单,任何 #匹配项将按输入的金额折扣价。 # # - 'order_count_match_type'决定我们如何比较 #客户的订单数量到输入的限制。可以是: # - ':greater_than'以确保客户的订单计数 #大于输入的限制 # - ':greater_than_equal'确保客户的订单 # count大于或等于输入的限制 # - ':less_than'以确保客户的订单计数为 #小于输入的限制 # - ':less_than_equal'确保客户的订单 # count小于或等于输入的限制 # - 'product_selector_match_type'决定我们是否寻找 #与输入选择器匹配或不匹配的产品。可以 号是: # - ':include'检查产品是否匹配 # - ':exclude'以确保产品不匹配 # - 'product_selector_type'决定产品的合格程度 #将被识别。可以是: # - ':tag'按标签查找产品 # - ':type'按类型查找产品 # - ':vendor'按供应商查找产品 # - ':product_id'按ID查找产品 # - ':variant_id'通过变量ID查找产品 # - ':subscription'查找订阅产品 # - ':all'用于所有产品 # - 'product_selectors'是一个标识符列表(从上面) #用于合格产品。产品/变体ID列表应该 #只包含数字(例如。没有引号)。如果使用':all', # this也可以是'nil'。 # - 'discount_type'是要提供的折扣类型。可以 #: # - ': % ' # - ':dollar' # - 'discount_amount'是百分比/美元折扣 # apply(每项) # - 'discount_message'是显示折扣时的消息 #被应用 # ================================================================ PRODUCT_DISCOUNTS_BY_ORDER_COUNT = [ { order_count_match_type: less_than , order_count_limit: 1 , product_selector_match_type:包括 , product_selector_type:: , product_selectors: 零 , discount_type:百分比 , discount_amount: 10 , discount_message: “首次购房者打九折!” } ] # ================================ 脚本代码(不要编辑 ) =============================== # ================================================================ # OrderCountSelector # #查找客户是否下了一定数量的订单 # ================================================================ 类 OrderCountSelector def 初始化 ( match_type , 限制 ) @match_type = match_type @limit = 限制 结束 def 比赛吗? ( 客户 ) 如果 自我 . respond_to吗? ( @match_type ) 自我 . 发送 ( @match_type , 客户 , @limit ) 其他的 提高 RuntimeError . 新 ( “无效的订单计数匹配类型” ) 结束 结束 def greater_than ( 客户 , 限制 ) 客户 . orders_count > 限制 结束 def greater_than_equal ( 客户 , 限制 ) 客户 . orders_count > = 限制 结束 def less_than ( 客户 , 限制 ) 客户 . orders_count < 限制 结束 def less_than_equal ( 客户 , 限制 ) 客户 . orders_count < = 限制 结束 结束 # ================================================================ # ProductSelector # #根据输入的标准查找匹配的产品。 # ================================================================ 类 ProductSelector def 初始化 ( match_type , selector_type , 选择器 ) @match_type = match_type @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @selector_type = selector_type @ selector = 选择器 结束 def 比赛吗? ( line_item ) 如果 自我 . respond_to吗? ( @selector_type ) 自我 . 发送 ( @selector_type , line_item ) 其他的 提高 RuntimeError . 新 ( “无效的产品选择器类型” ) 结束 结束 def 标签 ( line_item ) product_tags = line_item . 变体 . 产品 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @ selector & product_tags ). 发送 ( @comparator ) 结束 def 类型 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . product_type . downcase . 带 ) 结束 def 供应商 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . 供应商 . downcase . 带 ) 结束 def product_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . id ) 结束 def variant_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . id ) 结束 def 订阅 ( line_item ) ! line_item . selling_plan_id . nil ? 结束 def 所有 ( line_item ) 真正的 结束 结束 # ================================================================ # DiscountApplicator # #将输入的折扣应用到所提供的行项目。 # ================================================================ 类 DiscountApplicator def 初始化 ( discount_type , discount_amount , discount_message ) @discount_type = discount_type @discount_message = discount_message @discount_amount = 如果 discount_type = = : % 1 - ( discount_amount * 0.01 ) 其他的 钱 . 新 ( 分: One hundred. ) * discount_amount 结束 结束 def 应用 ( line_item ) new_line_price = 如果 @discount_type = = : % line_item . line_price * @discount_amount 其他的 [ line_item . line_price - ( @discount_amount * line_item . 数量 ), 钱 . 零 ]。 马克斯 结束 line_item . change_line_price ( new_line_price , 信息: @discount_message ) 结束 结束 # ================================================================ # ProductDiscountByOrderCountCampaign # #如果客户已经下了匹配数量的订单,任何 #匹配项将按输入的金额折扣价。 # ================================================================ 类 ProductDiscountByOrderCountCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 ) 返回 如果 车 . 客户 . nil ? @campaigns . 每一个 做 | 运动 | order_count_selector = OrderCountSelector . 新 ( 运动 [ : order_count_match_type ), 运动 [ : order_count_limit ] ) 下一个 除非 order_count_selector . 比赛吗? ( 车 . 客户 ) product_selector = ProductSelector . 新 ( 运动 [ : product_selector_match_type ), 运动 [ : product_selector_type ), 运动 [ : product_selectors ] ) discount_applicator = DiscountApplicator . 新 ( 运动 [ : discount_type ), 运动 [ : discount_amount ), 运动 [ : discount_message ] ) 车 . line_items . 每一个 做 | line_item | 下一个 除非 product_selector . 比赛吗? ( line_item ) discount_applicator . 应用 ( line_item ) 结束 结束 结束 结束 活动 = [ ProductDiscountByOrderCountCampaign . 新 ( PRODUCT_DISCOUNTS_BY_ORDER_COUNT ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车
去活化剂códigos去活化剂
Usa este script para disactivar el uso de códigos de descuento en el proeso de pago。
我爱你,妨碍你的客户códigos你不能原谅我。
# ================================ 可定制的设置 ================================ # ================================================================ #禁用折扣代码使用 # #任何折扣代码将被拒绝与输入的消息。 # # - 'REJECTION_MESSAGE'是显示折扣的消息 #代码被拒绝 # ================================================================ REJECTION_MESSAGE = “本次促销期间不能使用折扣码” # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # DisableDiscountCodesCampaign # #任何折扣代码将被拒绝与输入的消息。 # ================================================================ 类 DisableDiscountCodesCampaign def 初始化 ( rejection_message ) @rejection_message = rejection_message 结束 def 运行 ( 车 ) 返回 如果 车 . discount_code . nil ? 车 . discount_code . 拒绝 ( 信息: @rejection_message ) 结束 结束 活动 = [ DisableDiscountCodesCampaign . 新 ( REJECTION_MESSAGE ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车
Desactiva códigos de descuento para productos
Usa este script para desactivar el uso de códigos de descuento en el proeso de pago si hay productos específicos en el carrito。
请原谅,妨碍我们的客户códigos我们不能遵守礼节<代码>折扣代码>En el carrito。
# ================================ 可定制的设置 ================================ # ================================================================ 禁用产品的折扣代码 # #是否使用任何匹配的折扣代码,以及任何匹配的项目 #是在购物车中,折扣代码被拒绝与输入 #消息。 # # - 'discount_code_match_type'确定是否下面 # strings应该是完全匹配或部分匹配。可以是: # - ':exact'用于精确匹配 # - ':partial'表示部分匹配 # - 'discount_codes'是一个字符串列表,用于标识折扣 #代码 # - 'product_selector_match_type'决定我们是否寻找 #与输入选择器匹配或不匹配的产品。可以 号是: # - ':include'检查产品是否匹配 # - ':exclude'以确保产品不匹配 # - 'product_selector_type'决定产品的合格程度 #将被识别。可以是: # - ':tag'按标签查找产品 # - ':type'按类型查找产品 # - ':vendor'按供应商查找产品 # - ':product_id'按ID查找产品 # - ':variant_id'通过变量ID查找产品 # - ':subscription'查找订阅产品 # - ':all'用于所有产品 # - 'product_selectors'是一个标识符列表(从上面) #用于合格产品。产品/变体ID列表应该 #只包含数字(例如。没有引号)。如果使用':all', # this也可以是'nil'。 # - 'rejection_message'是显示折扣的消息 #代码被拒绝 # ================================================================ REJECT_DISCOUNT_CODE_FOR_PRODUCTS = [ { discount_code_match_type:精确 , discount_codes: [ “TESTCODE1” , “TESTCODE2” ), product_selector_match_type:包括 , product_selector_type:标签 , product_selectors: [ “折扣” ), rejection_message: “折扣代码不能用于‘打折’产品” } ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # DiscountCodeSelector # 属性中的任意一个匹配 #输入的代码。 # ================================================================ 类 DiscountCodeSelector def 初始化 ( match_type , discount_codes ) @comparator = match_type = = :确切 ? “= =” : “有吗?” @discount_codes = discount_codes . 地图 { | discount_code | discount_code . upcase . 带 } 结束 def 比赛吗? ( discount_code ) @discount_codes . 任何? { | 代码 | discount_code . 代码 . upcase . 发送 ( @comparator , 代码 ) } 结束 结束 # ================================================================ # ProductSelector # #根据输入的标准查找匹配的产品。 # ================================================================ 类 ProductSelector def 初始化 ( match_type , selector_type , 选择器 ) @match_type = match_type @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @selector_type = selector_type @ selector = 选择器 结束 def 比赛吗? ( line_item ) 如果 自我 . respond_to吗? ( @selector_type ) 自我 . 发送 ( @selector_type , line_item ) 其他的 提高 RuntimeError . 新 ( “无效的产品选择器类型” ) 结束 结束 def 标签 ( line_item ) product_tags = line_item . 变体 . 产品 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @ selector & product_tags ). 发送 ( @comparator ) 结束 def 类型 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . product_type . downcase . 带 ) 结束 def 供应商 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . 供应商 . downcase . 带 ) 结束 def product_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . id ) 结束 def variant_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . id ) 结束 def 订阅 ( line_item ) ! line_item . selling_plan_id . nil ? 结束 def 所有 ( line_item ) 真正的 结束 结束 # ================================================================ # DisableDiscountCodesForProductsCampaign # #是否使用任何匹配的折扣代码,以及任何匹配的项目 #是在购物车中,折扣代码被拒绝与输入 #消息。 # ================================================================ 类 DisableDiscountCodesForProductsCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 ) 返回 如果 车 . discount_code . nil ? @campaigns . 每一个 做 | 运动 | discount_code_selector = DiscountCodeSelector . 新 ( 运动 [ : discount_code_match_type ), 运动 [ : discount_codes ] ) 下一个 除非 discount_code_selector . 比赛吗? ( 车 . discount_code ) product_selector = ProductSelector . 新 ( 运动 [ : product_selector_match_type ), 运动 [ : product_selector_type ), 运动 [ : product_selectors ), ) 下一个 除非 车 . line_items . 任何? { | line_item | product_selector . 比赛吗? ( line_item ) } 车 . discount_code . 拒绝 ( 信息: 运动 [ : rejection_message ]) 结束 结束 结束 活动 = [ DisableDiscountCodesForProductsCampaign . 新 ( REJECT_DISCOUNT_CODE_FOR_PRODUCTS ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车
产品有限公司
Usa este script para aplicar límites de cantidad a productos específicos。
Por ejemplo, impide que los clients comn más de 1 "Producto X" en un solo pedido。
背板
Este脚本没有妨碍agregar los artículos en un primer momento。孤独的淘汰,最后的结局。没有se envía ninguna notificación a los clients al eliminar estos artículos del carrito。
# ================================ 可定制的设置 ================================ # ================================================================ #产品数量限制 # 如果任意匹配项的数量大于 #输入的阈值,多余的物品将从购物车中移除。 #需要注意的是,我们不会通知客户 #当这种情况发生时。 # # - 'enable'决定活动是否运行。可以是: # - 'true'运行 # - 'false'表示不运行 # - 'product_selector_match_type'决定我们是否寻找 #与输入选择器匹配或不匹配的产品。可以 号是: # - ':include'检查产品是否匹配 # - ':exclude'以确保产品不匹配 # - 'product_selector_type'决定产品的合格程度 #将被识别。可以是: # - ':tag'按标签查找产品 # - ':type'按类型查找产品 # - ':vendor'按供应商查找产品 # - ':product_id'按ID查找产品 # - ':variant_id'通过变量ID查找产品 # - ':subscription'查找订阅产品 # - ':all'用于所有产品 # - 'product_selectors'是一个标识符列表(从上面) #用于合格产品。产品/变体ID列表应该 #只包含数字(例如。没有引号)。如果使用':all', # this也可以是'nil'。 # - 'variant_level_limit'确定是否低于限制 #应用于变量或总量级别。为 #示例,我可以有X个单独匹配的项目, #或者我只能有X个匹配的项目总数? #可以是: # - 'true'限制在一个变量级别 # -“false”限制总数 # - 'quantity_allowed'是允许的产品数量 # ================================================================ QUANTITY_LIMITS = { 启用: 真正的 , 活动: [ { product_selector_match_type:包括 , product_selector_type:标签 , product_selectors: [ “有限” ), variant_level_limit: 真正的 , quantity_allowed: 2 , }, ] } # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # ProductSelector # #根据输入的标准查找匹配的产品。 # ================================================================ 类 ProductSelector def 初始化 ( match_type , selector_type , 选择器 ) @match_type = match_type @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @selector_type = selector_type @ selector = 选择器 结束 def 比赛吗? ( line_item ) 如果 自我 . respond_to吗? ( @selector_type ) 自我 . 发送 ( @selector_type , line_item ) 其他的 提高 RuntimeError . 新 ( “无效的产品选择器类型” ) 结束 结束 def 标签 ( line_item ) product_tags = line_item . 变体 . 产品 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @ selector & product_tags ). 发送 ( @comparator ) 结束 def 类型 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . product_type . downcase . 带 ) 结束 def 供应商 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . 供应商 . downcase . 带 ) 结束 def product_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . id ) 结束 def variant_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . id ) 结束 def 订阅 ( line_item ) ! line_item . selling_plan_id . nil ? 结束 def 所有 ( line_item ) 真正的 结束 结束 # ================================================================ # ProductQuantityLimitCampaign # 如果任意匹配项的数量大于 #输入的阈值,多余的物品将从购物车中移除。 # ================================================================ 类 ProductQuantityLimitCampaign def 初始化 ( 启用 , 活动 ) @enable = 启用 @campaigns = 活动 结束 def 运行 ( 车 ) 返回 除非 @enable @campaigns . 每一个 做 | 运动 | product_selector = ProductSelector . 新 ( 运动 [ : product_selector_match_type ), 运动 [ : product_selector_type ), 运动 [ : product_selectors ] ) 如果 运动 [ : variant_level_limit ] applicable_items = {} 车 . line_items . 每一个 做 | line_item | 下一个 除非 product_selector . 比赛吗? ( line_item ) id = line_item . 变体 . id 如果 applicable_items [ id ]。 nil ? applicable_items [ id ] = { 项目: [], total_quantity: 0 } 结束 applicable_items [ id ] [ :项目 ]。 推 ( line_item ) applicable_items [ id ] [ : total_quantity ] + = line_item . 数量 结束 下一个 如果 applicable_items . nil ? applicable_items . 每一个 做 | id , 信息 | 下一个 除非 信息 [ : total_quantity ] > 运动 [ : quantity_allowed ] num_to_remove = 信息 [ : total_quantity ] - 运动 [ : quantity_allowed ] 自我 . loop_items ( 车 , 信息 [ :项目 ), num_to_remove ) 结束 其他的 applicable_items = 车 . line_items . 选择 { | line_item | product_selector . 比赛吗? ( line_item ) } 下一个 如果 applicable_items . nil ? total_quantity = applicable_items . 地图 ( & 数量: ). 减少 ( 0 , : + ) 下一个 除非 total_quantity > 运动 [ : quantity_allowed ] num_to_remove = total_quantity - 运动 [ : quantity_allowed ] 自我 . loop_items ( 车 , applicable_items , num_to_remove ) 结束 结束 结束 def loop_items ( 车 , line_items , num_to_remove ) line_items . 每一个 做 | line_item | 如果 line_item . 数量 > num_to_remove split_line_item = line_item . 分裂 ( 花: num_to_remove ) 打破 其他的 指数 = 车 . line_items . find_index ( line_item ) 车 . line_items . delete_at ( 指数 ) num_to_remove - = line_item . 数量 结束 打破 如果 num_to_remove < = 0 结束 结束 结束 活动 = [ ProductQuantityLimitCampaign . 新 ( QUANTITY_LIMITS [ :使 ), QUANTITY_LIMITS [ :活动 ), ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 ) 结束 输出 . 车 = 输入 . 车