class Quickeebooks::Shared::Service::Filter
Constants
- DATE_FORMAT
- DATE_TIME_FORMAT
Attributes
after[RW]
For Date/Time filtering
before[RW]
For Date/Time filtering
eq[RW]
For number comparisons
field[RW]
gt[RW]
For number comparisons
lt[RW]
For number comparisons
type[R]
value[RW]
Public Class Methods
new(type, *args)
click to toggle source
# File lib/quickeebooks/shared/service/filter.rb, line 18 def initialize(type, *args) @type = type if args.first.is_a?(Hash) args.first.each_pair do |key, value| instance_variable_set("@#{key}", value) end end end
Public Instance Methods
to_s()
click to toggle source
# File lib/quickeebooks/shared/service/filter.rb, line 27 def to_s case @type.to_sym when :date date_to_s when :datetime date_time_to_s when :text text_to_s when :boolean boolean_to_s when :number number_to_s else raise ArgumentError, "Don't know how to generate a Filter for type #{@type}" end end
to_xml()
click to toggle source
# File lib/quickeebooks/shared/service/filter.rb, line 44 def to_xml case @type.to_sym when :text text_to_xml when :boolean boolean_to_xml when :date date_to_xml when :datetime datetime_to_xml when :number number_to_xml else raise ArgumentError, "Don't know how to generate a Filter for type #{@type}" end end
Private Instance Methods
boolean_to_s()
click to toggle source
# File lib/quickeebooks/shared/service/filter.rb, line 121 def boolean_to_s "#{@field} :EQUALS: #{@value}" end
boolean_to_xml()
click to toggle source
# File lib/quickeebooks/shared/service/filter.rb, line 125 def boolean_to_xml "<#{@field}>#{CGI::escapeHTML(@value.to_s)}</#{@field}>" end
date_time_to_s()
click to toggle source
# File lib/quickeebooks/shared/service/filter.rb, line 95 def date_time_to_s clauses = [] if @before raise ':before is not a valid DateTime-like object' unless valid_datetime?(@before) clauses << "#{@field} :BEFORE: #{formatted_datetime(@before)}" end if @after raise ':after is not a valid DateTime-like object' unless valid_datetime?(@after) clauses << "#{@field} :AFTER: #{formatted_datetime(@after)}" end if @before.nil? && @after.nil? clauses << "#{@field} :EQUALS: #{formatted_datetime(@value)}" end clauses.join(" :AND: ") end
date_to_s()
click to toggle source
# File lib/quickeebooks/shared/service/filter.rb, line 77 def date_to_s clauses = [] if @before raise ':before is not a valid Date-like object' unless valid_datetime?(@before) clauses << "#{@field} :BEFORE: #{formatted_date(@before)}" end if @after raise ':after is not a valid Date-like object' unless valid_datetime?(@after) clauses << "#{@field} :AFTER: #{formatted_date(@after)}" end if @before.nil? && @after.nil? clauses << "#{@field} :EQUALS: #{formatted_date(@value)}" end clauses.join(" :AND: ") end
date_to_xml()
click to toggle source
# File lib/quickeebooks/shared/service/filter.rb, line 133 def date_to_xml "<#{@field}>#{formatted_date(@value)}</#{@field}>" end
datetime_to_xml()
click to toggle source
# File lib/quickeebooks/shared/service/filter.rb, line 137 def datetime_to_xml "<#{@field}>#{formatted_datetime(@value)}</#{@field}>" end
formatted_date(date)
click to toggle source
# File lib/quickeebooks/shared/service/filter.rb, line 141 def formatted_date(date) date.strftime(DATE_FORMAT) end
formatted_datetime(datetime)
click to toggle source
# File lib/quickeebooks/shared/service/filter.rb, line 145 def formatted_datetime(datetime) datetime.strftime(DATE_TIME_FORMAT) end
number_to_s()
click to toggle source
# File lib/quickeebooks/shared/service/filter.rb, line 63 def number_to_s clauses = [] if @eq clauses << "#{@field} :EQUALS: #{@eq}" end if @gt clauses << "#{@field} :GreaterThan: #{@gt}" end if @lt clauses << "#{@field} :LessThan: #{@lt}" end clauses.join(" :AND: ") end
number_to_xml()
click to toggle source
# File lib/quickeebooks/shared/service/filter.rb, line 129 def number_to_xml "<#{@field}>#{CGI::escapeHTML(@value.to_s)}</#{@field}>" end
text_to_s()
click to toggle source
# File lib/quickeebooks/shared/service/filter.rb, line 113 def text_to_s "#{@field} :EQUALS: #{@value}" end
text_to_xml()
click to toggle source
# File lib/quickeebooks/shared/service/filter.rb, line 117 def text_to_xml "<#{@field}>#{CGI::escapeHTML(@value.to_s)}</#{@field}>" end
valid_datetime?(value)
click to toggle source
# File lib/quickeebooks/shared/service/filter.rb, line 149 def valid_datetime?(value) value.respond_to?(:strftime) end