class Coupon

Attributes

couponcd[RW]
couponseq[RW]
error[RW]
expires_soon[RW]
expiry[RW]
name[RW]
real_value[RW]

Public Class Methods

new(item, total_price_without_tax) click to toggle source
# File lib/order_coupon.rb, line 55
def initialize(item, total_price_without_tax)
  name_element_text = item.css("h4").text
  coupon_name = name_element_text.sub("\\", "¥").sub("Expires soon", "")
  expires_soon = name_element_text.include?("Expires soon") ? "Expires soon" : ""

  coupon_link = item.css(".jso-userCuponUse").first || {}

  yen_value = coupon_name.scan(/¥(\d+)/).flatten.first.to_i
  percent_value = coupon_name.scan(/(\d+)%/).flatten.first.to_i

  if yen_value != 0
    real_value = yen_value * 1.08 # 8% tax
  elsif percent_value != 0
    real_value = (total_price_without_tax / (100 / percent_value)) * 1.08 # 8% tax
  end

  error = item.css(".m-input__error").text
  error = error && error.strip != "" ? "\n    #{error}" : nil

  self.name = coupon_name
  self.expiry = item.css(".m-entryPeriod").text.scan(/\d{4}-\d{2}-\d{2}/).first
  self.error = error
  self.couponcd = coupon_link["couponcd"]
  self.couponseq = coupon_link["couponseq"]
  self.expires_soon = expires_soon
  self.real_value = real_value.to_i
end

Public Instance Methods

list_item() click to toggle source
# File lib/order_coupon.rb, line 91
def list_item
  "#{name.colorize(:blue)} (-¥#{real_value.to_s.colorize(:green)}) "\
  "#{expires_soon.colorize(:yellow)} #{expiry} #{error.to_s.colorize(:red)}".strip
end
params() click to toggle source
# File lib/order_coupon.rb, line 87
def params
  { couponcd: couponcd, couponseq: couponseq }.compact
end
usable?() click to toggle source
# File lib/order_coupon.rb, line 83
def usable?
  couponcd && couponseq
end