Class: LedgerSync::Adaptors::QuickBooksOnline::LedgerSerializerType::EntityReferenceType

Inherits:
LedgerSerializerType::ValueType show all
Defined in:
lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/entity_reference_type.rb

Instance Method Summary collapse

Instance Method Details

#convert_from_ledger(value:) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/entity_reference_type.rb', line 8

def convert_from_ledger(value:)
  return if value.nil?

  raise "Unknown value type.  Hash expected.  Given: #{value.class.name}" unless value.is_a?(Hash)
  return if value.empty?

  value = LedgerSync::Util::HashHelpers.deep_stringify_keys(value)
  resource_class = Adaptor.resource_from_ledger_type(type: value['type'])
  raise "Unknown QuickBooks Online resource type: #{value['type']}" if resource_class.blank?

  ret = resource_class.new(
    ledger_id: value['value']
  )

  ret.display_name = value['name'] if ret.respond_to?(:display_name)
  ret
end

#convert_from_local(value:) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/entity_reference_type.rb', line 26

def convert_from_local(value:)
  return if value.nil?
  raise "Resource expected.  Given: #{value.class.name}" unless value.is_a?(LedgerSync::Resource)

  ret = {
    'value' => value.ledger_id
  }
  ret['name'] = value.display_name if value.respond_to?(:display_name)
  ret['type'] = Adaptor.ledger_resource_type_for(
    resource_class: value.class
  ).classify
  ret
end