module NetSuite::Support::Records

Public Instance Methods

record_type() click to toggle source
# File lib/netsuite/support/records.rb, line 51
def record_type
  "#{record_namespace}:#{self.class.to_s.split('::').last}"
end
refresh(credentials = {}) click to toggle source
# File lib/netsuite/support/records.rb, line 55
def refresh(credentials = {})
  fresh_record = self.class.get(self.internal_id, credentials)

  self.attributes = fresh_record.send(:attributes)

  # gift cards do not have an external ID
  if fresh_record.respond_to?(:external_id)
    self.external_id = fresh_record.external_id
  end

  self.errors = nil

  self
end
to_attributes!(hash, kname, v) click to toggle source
# File lib/netsuite/support/records.rb, line 25
def to_attributes!(hash, kname, v)
  if v.respond_to?(:internal_id) && v.internal_id
    hash[:attributes!] ||= {}
    hash[:attributes!][kname] ||= {}
    hash[:attributes!][kname]['internalId'] = v.internal_id
  end

  if v.respond_to?(:external_id) && v.external_id
    hash[:attributes!] ||= {}
    hash[:attributes!][kname] ||= {}
    hash[:attributes!][kname]['externalId'] = v.external_id
  end

  if v.kind_of?(NetSuite::Records::RecordRef) && v.type
    hash[:attributes!] ||= {}
    hash[:attributes!][kname] ||= {}
    hash[:attributes!][kname]['type'] = v.type.lower_camelcase
  end

  if v.kind_of?(NetSuite::Records::CustomRecordRef) && v.type_id
    hash[:attributes!] ||= {}
    hash[:attributes!][kname] ||= {}
    hash[:attributes!][kname]['typeId'] = v.type_id.lower_camelcase
  end
end
to_record() click to toggle source
# File lib/netsuite/support/records.rb, line 7
def to_record
  attributes.reject { |k,v| self.class.read_only_fields.include?(k) || self.class.search_only_fields.include?(k) }.inject({}) do |hash, (k,v)|
    kname = "#{record_namespace}:"
    kname += k == :klass ? 'class' : k.to_s.lower_camelcase

    to_attributes!(hash, kname, v)

    if Array === v
      v = v.map { |i| i.respond_to?(:to_record) ? i.to_record : i }
    elsif v.respond_to?(:to_record)
      v = v.to_record
    end

    hash[kname] = v
    hash
  end
end