Module: Netfira::WebConnect::Model::Record::Writable

Extended by:
ActiveSupport::Concern
Defined in:
lib/netfira/web_connect/model/record/writable.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#guidObject



52
53
54
# File 'lib/netfira/web_connect/model/record/writable.rb', line 52

def guid
  @guid ||= Guid.from(self[:guid])
end

#guid=(_) ⇒ Object



56
57
58
# File 'lib/netfira/web_connect/model/record/writable.rb', line 56

def guid=(_)
  raise 'GUIDs are read-only'
end

#to_deliverableObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/netfira/web_connect/model/record/writable.rb', line 22

def to_deliverable
  attributes_as_camel_cased_hash.tap do |result|

    # Include GUIDs for sendables, e.g. "orderId" => "hd8jdi38jds02893hdo8wq3"
    result["#{self.class.single_name_camel}Id"] = guid.to_s if sendable?

    # Included timestamps, e.g. "createdAt" => "2014-09-27T11:10:00+10:00"
    %w(created_at updated_at).each do |field|
      result[field.camelize :lower] = __send__(field).strftime '%FT%T%:z'
    end

    # Include collections, e.g. "lines" => [{...}, ...]
    result.merge! self.class.schema.has_many.keys.map { |k| [k, __send__(k).map(&:to_deliverable)] }.to_h
  end
end

#to_deprecated_downstreamObject

Used by older downstream methods, e.g. newOrders, newInboundDocuments etc



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/netfira/web_connect/model/record/writable.rb', line 39

def to_deprecated_downstream
  fields = attributes_as_camel_cased_hash(true)
  if sendable?
    sendable_fields = {
        "#{self.class.single_name_camel}GUID" => guid.to_s,
        "#{self.class.single_name_camel}Id" => id.to_s,
        finalised: '1'
    }
    fields.merge! sendable_fields
  end
  {created: created_at.to_i, fields: fields}.merge deprecated_downstream_children
end