Class: ActiveNetsuite::Record

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
MethodInflector
Defined in:
lib/activenetsuite/core/record.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from MethodInflector

included, #method_missing

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class ActiveNetsuite::MethodInflector

Class Method Details

.allObject



50
51
52
# File 'lib/activenetsuite/core/record.rb', line 50

def all
  search.response
end

.basic_search_classObject



39
40
41
# File 'lib/activenetsuite/core/record.rb', line 39

def basic_search_class
  "::#{to_s}SearchBasic".constantize
end

.clientObject



9
10
11
# File 'lib/activenetsuite/core/record.rb', line 9

def client
  @@client ||= nil
end

.client=(client) ⇒ Object



13
14
15
# File 'lib/activenetsuite/core/record.rb', line 13

def client=(client)
  @@client = client
end

.delete(objects) ⇒ Object



54
55
56
57
# File 'lib/activenetsuite/core/record.rb', line 54

def delete(objects)
  objects = [objects] unless objects.respond_to?(:map)
  client.delete_list(refs(objects))
end

.deleted(op, val) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/activenetsuite/core/record.rb', line 64

def deleted(op, val)
  op = ('ActiveNetsuite::SearchDateFieldOperator::' + op.to_s.camelize).constantize
  val = ('ActiveNetsuite::SearchDate::' + val.to_s.camelize).constantize
  search_value = SearchDateField.new
  search_value.xmlattr_operator = op
  search_value.predefinedSearchValue = val

  search_type = SearchEnumMultiSelectField.new
  search_type.xmlattr_operator = SearchEnumMultiSelectFieldOperator::AnyOf
  search_type.searchValue = type

  get_deleted_filter = GetDeletedFilter.new(search_value, search_type)
  client.get_deleted(get_deleted_filter)
end

.find(id) ⇒ Object Also known as: get



26
27
28
# File 'lib/activenetsuite/core/record.rb', line 26

def find(id)
  find_by_id(internal_id: id) or raise_not_found_error(internal_id: id)
end

.find_by_external_id(id) ⇒ Object



31
32
33
# File 'lib/activenetsuite/core/record.rb', line 31

def find_by_external_id(id)
  find_by_id(external_id: id)
end

.find_by_id(args) ⇒ Object



35
36
37
# File 'lib/activenetsuite/core/record.rb', line 35

def find_by_id(args)
  client.get(ref(args)).record
end

.find_by_internal_id(id) ⇒ Object



22
23
24
# File 'lib/activenetsuite/core/record.rb', line 22

def find_by_internal_id(id)
  find_by_id(internal_id: id)
end

.list(objects) ⇒ Object



45
46
47
48
# File 'lib/activenetsuite/core/record.rb', line 45

def list(objects)
  objects = [objects] unless objects.respond_to?(:map)
  client.get_list(refs(objects))
end

.raise_not_found_error(arg) ⇒ Object

Raises:



104
105
106
# File 'lib/activenetsuite/core/record.rb', line 104

def raise_not_found_error(arg)
  raise NotFoundError, not_found_error_message(ref(arg))
end

.ref(internal_id) ⇒ Object .ref(hash) ⇒ Object

Convert arg to RecordRef

Examples:

ref = Record.arg(12)
ref.class # => RecordRef
ref.type # => 'record'
ref.internal_id # => 12

ref = Record.arg(external_id: 12)
ref.external_id # => 12

Overloads:

  • .ref(internal_id) ⇒ Object

    Parameters:

    • internal_id (String)
  • .ref(hash) ⇒ Object

    Parameters:

    • hash (Hash)

      with internal_id or external_id

Returns:

  • RecordRef



95
96
97
98
99
100
101
102
# File 'lib/activenetsuite/core/record.rb', line 95

def ref(arg)
  ref = RecordRef.new
  ref.type = type
  arg = {internal_id: arg} unless arg.is_a?(Hash)
  ref.internal_id = arg[:internal_id]
  ref.external_id = arg[:external_id]
  ref
end

.typeObject



17
18
19
20
# File 'lib/activenetsuite/core/record.rb', line 17

def type
  type = to_s.split('::').last
  type[0,1].downcase + type[1..-1]
end

.update(records) ⇒ Object



59
60
61
62
# File 'lib/activenetsuite/core/record.rb', line 59

def update(records)
  records = [records] unless records.respond_to?(:map)
  client.update_list(records)
end

Instance Method Details

#active=(value) ⇒ Object



214
215
216
# File 'lib/activenetsuite/core/record.rb', line 214

def active=(value)
  self.is_inactive = !value
end

#active?Boolean

Returns:

  • (Boolean)


206
207
208
# File 'lib/activenetsuite/core/record.rb', line 206

def active?
  !is_inactive
end

#addObject



135
136
137
138
139
140
141
# File 'lib/activenetsuite/core/record.rb', line 135

def add
  res = client.add(self)
  if res.success?
    self.internal_id = res.internal_id
  end
  res
end

#add!Object



143
144
145
# File 'lib/activenetsuite/core/record.rb', line 143

def add!
  raise_on_fail(:add)
end

#clientObject



187
188
189
# File 'lib/activenetsuite/core/record.rb', line 187

def client
  self.class.client
end

#deleteObject



175
176
177
178
179
180
181
# File 'lib/activenetsuite/core/record.rb', line 175

def delete
  res = client.delete(ref)
  if res.success?
    self.internal_id = nil
  end
  res
end

#delete!Object



183
184
185
# File 'lib/activenetsuite/core/record.rb', line 183

def delete!
  raise_on_error(:delete)
end

#gettersObject



230
231
232
# File 'lib/activenetsuite/core/record.rb', line 230

def getters
  setters.map(&:to_s).map(&:chop).map(&:to_sym)
end

#inactive=(value) ⇒ Object



218
219
220
# File 'lib/activenetsuite/core/record.rb', line 218

def inactive=(value)
  self.is_inactive = !!value
end

#inactive?Boolean

Returns:

  • (Boolean)


210
211
212
# File 'lib/activenetsuite/core/record.rb', line 210

def inactive?
  !active?
end

#loadObject



191
192
193
194
195
196
197
198
199
200
# File 'lib/activenetsuite/core/record.rb', line 191

def load
  return self if loaded?

  result = find_by_id
  result.getters.each do |getter|
    send :"#{getter}=", result.send(getter)
  end
  @loaded = true
  self
end

#loaded?Boolean

Returns:

  • (Boolean)


202
203
204
# File 'lib/activenetsuite/core/record.rb', line 202

def loaded?
  !!@loaded
end

#new?Boolean

Returns:

  • (Boolean)


171
172
173
# File 'lib/activenetsuite/core/record.rb', line 171

def new?
  !internal_id
end

#refObject



222
223
224
# File 'lib/activenetsuite/core/record.rb', line 222

def ref
  self.class.ref(internal_id)
end

#saveObject



155
156
157
158
159
160
161
# File 'lib/activenetsuite/core/record.rb', line 155

def save
  if new?
    add
  else
    update
  end
end

#save!Object



163
164
165
166
167
168
169
# File 'lib/activenetsuite/core/record.rb', line 163

def save!
  if new?
    add!
  else
    update!
  end
end

#settersObject



226
227
228
# File 'lib/activenetsuite/core/record.rb', line 226

def setters
  public_methods(false).grep(/=$/)
end

#updateObject



147
148
149
# File 'lib/activenetsuite/core/record.rb', line 147

def update
  client.update(self)
end

#update!Object



151
152
153
# File 'lib/activenetsuite/core/record.rb', line 151

def update!
  raise_on_fail(:update)
end