class Suretax::Api::Request

Attributes

business_unit[RW]
client_number[RW]
client_tracking[RW]
data_month[RW]
data_year[RW]
industry_exemption[RW]
items[RW]
response[R]
response_group[RW]
response_type[RW]
return_file_code[RW]
stan[RW]
total_revenue[RW]
validation_key[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/suretax/api/request.rb, line 37
def initialize(options = {})
  self.return_file_code = "0"
  self.client_number    = options.delete(:client_number)  || configuration.client_number
  self.validation_key   = options.delete(:validation_key) || configuration.validation_key

  default_data_date(options)

  options.each_pair do |key, value|
    send("#{key}=", value.to_s)
  end

  initialize_items(options)

  validate!
end

Public Instance Methods

params() click to toggle source
# File lib/suretax/api/request.rb, line 75
def params
  {
    "ClientNumber"             => client_number,
    "BusinessUnit"             => business_unit || "",
    "ValidationKey"            => validation_key,
    "DataYear"                 => data_year,
    "DataMonth"                => data_month,
    "TotalRevenue"             => total_revenue.to_f,
    "ReturnFileCode"           => return_file_code,
    "ClientTracking"           => client_tracking || "",
    "IndustryExemption"        => industry_exemption,
    "ResponseType"             => response_type,
    "ResponseGroup"            => response_group,
    "STAN"                     => stan || "",
    "ItemList"                 => items.map(&:params)
  }
end
rollback() click to toggle source
# File lib/suretax/api/request.rb, line 67
def rollback
  if response
    CancelRequest.new(transaction: response.transaction,
      client_number: client_number, validation_key: validation_key,
      client_tracking: client_tracking).submit
  end
end
submit() click to toggle source
# File lib/suretax/api/request.rb, line 53
def submit
  if valid?
    log_request
    suretax_response = connection.post(params)
    @response = Suretax::Api::Response.new(suretax_response.body)
  else
    raise(ValidationError, errors.messages.join(", "))
  end
end
valid?() click to toggle source
# File lib/suretax/api/request.rb, line 63
def valid?
  errors.none?
end

Private Instance Methods

configuration() click to toggle source
# File lib/suretax/api/request.rb, line 127
def configuration
  Suretax.configuration
end
connection() click to toggle source
# File lib/suretax/api/request.rb, line 131
def connection
  @connection ||= Connection.new
end
default_data_date(options) click to toggle source
# File lib/suretax/api/request.rb, line 95
def default_data_date(options)
  max_date = configuration.test? ? Date.today.prev_month : Date.today

  requested_date = begin
                     Date.new(options.delete(:data_year).to_i, options.delete(:data_month).to_i, 1)
                   rescue
                     max_date
                   end

  data_date = [requested_date, max_date].min

  self.data_month = data_date.strftime("%m")
  self.data_year  = data_date.strftime("%Y")
end
initialize_items(options) click to toggle source
# File lib/suretax/api/request.rb, line 110
def initialize_items(options)
  self.items = []
  if options[:items].respond_to?(:each)
    options[:items].each do |item_args|
      items << RequestItem.new(item_args)
    end
  end
end
log_request() click to toggle source
# File lib/suretax/api/request.rb, line 119
def log_request
  logger&.info "\nSureTax Request sent:\n#{params.inspect}"
end
logger() click to toggle source
# File lib/suretax/api/request.rb, line 123
def logger
  configuration.logger
end