ledger_sync 1.3.1 → 1.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/ledger_sync/adaptors/ledger_serializer.rb +36 -6
- data/lib/ledger_sync/adaptors/ledger_serializer_attribute.rb +33 -3
- data/lib/ledger_sync/adaptors/ledger_serializer_attribute_set.rb +7 -0
- data/lib/ledger_sync/adaptors/ledger_serializer_type/references_one_type.rb +22 -0
- data/lib/ledger_sync/adaptors/mixins/infer_ledger_serializer_mixin.rb +1 -1
- data/lib/ledger_sync/adaptors/netsuite/account/operations/create.rb +1 -1
- data/lib/ledger_sync/adaptors/netsuite/account/operations/find.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/account/ledger_serializer.rb +25 -9
- data/lib/ledger_sync/adaptors/quickbooks_online/account/operations/create.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/account/operations/find.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/account/operations/update.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/adaptor.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/bill/ledger_serializer.rb +4 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/bill/operations/create.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/bill/operations/find.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/bill/operations/update.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/currency/ledger_serializer.rb +17 -0
- data/lib/ledger_sync/adaptors/quickbooks_online/deposit/ledger_serializer.rb +4 -2
- data/lib/ledger_sync/adaptors/quickbooks_online/deposit/operations/create.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/deposit/operations/find.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/deposit/operations/update.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/expense/ledger_serializer.rb +4 -2
- data/lib/ledger_sync/adaptors/quickbooks_online/expense/operations/create.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/expense/operations/find.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/expense/operations/update.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/invoice/ledger_serializer.rb +3 -2
- data/lib/ledger_sync/adaptors/quickbooks_online/invoice/operations/create.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/invoice/operations/find.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/invoice/operations/update.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry/ledger_serializer.rb +4 -2
- data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry/operations/create.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry/operations/find.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry/operations/update.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/payment/ledger_serializer.rb +6 -4
- data/lib/ledger_sync/adaptors/quickbooks_online/payment/operations/create.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/payment/operations/find.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/payment/operations/update.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/request.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/transfer/ledger_serializer.rb +5 -2
- data/lib/ledger_sync/adaptors/quickbooks_online/transfer/operations/create.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/transfer/operations/find.rb +1 -1
- data/lib/ledger_sync/adaptors/quickbooks_online/transfer/operations/update.rb +1 -1
- data/lib/ledger_sync/adaptors/test/account/operations/create.rb +1 -1
- data/lib/ledger_sync/adaptors/test/account/operations/find.rb +1 -1
- data/lib/ledger_sync/adaptors/test/account/operations/invalid.rb +1 -1
- data/lib/ledger_sync/adaptors/test/account/operations/update.rb +1 -1
- data/lib/ledger_sync/adaptors/test/account/operations/valid.rb +1 -1
- data/lib/ledger_sync/adaptors/test/expense/operations/create.rb +1 -1
- data/lib/ledger_sync/adaptors/test/expense/operations/find.rb +1 -1
- data/lib/ledger_sync/adaptors/test/expense/operations/update.rb +1 -1
- data/lib/ledger_sync/adaptors/test/payment/operations/create.rb +1 -1
- data/lib/ledger_sync/adaptors/test/payment/operations/find.rb +1 -1
- data/lib/ledger_sync/adaptors/test/payment/operations/update.rb +1 -1
- data/lib/ledger_sync/adaptors/test/transfer/operations/create.rb +1 -1
- data/lib/ledger_sync/adaptors/test/transfer/operations/find.rb +1 -1
- data/lib/ledger_sync/adaptors/test/transfer/operations/update.rb +1 -1
- data/lib/ledger_sync/resources/account.rb +4 -1
- data/lib/ledger_sync/resources/bill.rb +2 -1
- data/lib/ledger_sync/resources/deposit.rb +2 -1
- data/lib/ledger_sync/resources/expense.rb +3 -2
- data/lib/ledger_sync/resources/invoice.rb +2 -1
- data/lib/ledger_sync/resources/journal_entry.rb +3 -1
- data/lib/ledger_sync/resources/payment.rb +2 -1
- data/lib/ledger_sync/resources/transfer.rb +2 -1
- data/lib/ledger_sync/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05667fe1a37dc8edfcb33121d2eb5f08ad076b8b635ecaaf33809b663c830f68
|
4
|
+
data.tar.gz: 3b3a6c68af8ecf2ce04a8f789854fb1002b3d90d5e747e71d398aa1b1b8b4c9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14cdebe2e5342838d44202fbe9b11c28e09a6e18ccbb4827145d0b098833c1549c9e922bd8760555708358058df74ff5574a46b91aa67d48f347a99d2e5a0129
|
7
|
+
data.tar.gz: 8a48a4251273a4aa7a2cca65cc1eaed38c87d385caa2aeb1c3eaf63c76f0d67bf5af3099dcb16a1c4df82517e79c3bd35c8b41584a1a5197a584bce5c951ca5f
|
data/Gemfile.lock
CHANGED
@@ -12,9 +12,9 @@ module LedgerSync
|
|
12
12
|
|
13
13
|
attr_reader :resource
|
14
14
|
|
15
|
-
def initialize(resource:)
|
15
|
+
def initialize(ensure_inferred_resource_class: true, resource:)
|
16
16
|
@resource = resource
|
17
|
-
ensure_inferred_resource_class!
|
17
|
+
ensure_inferred_resource_class! if ensure_inferred_resource_class
|
18
18
|
end
|
19
19
|
|
20
20
|
def attribute_value_from_ledger(hash:, ledger_serializer_attribute:, resource:)
|
@@ -28,7 +28,7 @@ module LedgerSync
|
|
28
28
|
deserialize_into = resource.dup # Do not overwrite values in the resource
|
29
29
|
hash = Util::HashHelpers.deep_stringify_keys(hash)
|
30
30
|
|
31
|
-
self.class.attributes.each do |ledger_serializer_attribute|
|
31
|
+
self.class.attributes.deserializable_attributes.each do |ledger_serializer_attribute|
|
32
32
|
next unless ledger_serializer_attribute.resource_attribute?
|
33
33
|
|
34
34
|
value = attribute_value_from_ledger(
|
@@ -49,7 +49,7 @@ module LedgerSync
|
|
49
49
|
def to_ledger_hash(only_changes: false)
|
50
50
|
ret = {}
|
51
51
|
|
52
|
-
self.class.attributes.each do |ledger_serializer_attribute|
|
52
|
+
self.class.attributes.serializable_attributes.each do |ledger_serializer_attribute|
|
53
53
|
next if only_changes && !resource.attribute_changed?(ledger_serializer_attribute.resource_attribute)
|
54
54
|
|
55
55
|
ret = Util::HashHelpers.deep_merge(
|
@@ -61,11 +61,20 @@ module LedgerSync
|
|
61
61
|
ret
|
62
62
|
end
|
63
63
|
|
64
|
-
def self.attribute(
|
64
|
+
def self.attribute(
|
65
|
+
deserialize: true,
|
66
|
+
ledger_attribute:,
|
67
|
+
resource_attribute: nil,
|
68
|
+
serialize: true,
|
69
|
+
type: LedgerSerializerType::ValueType,
|
70
|
+
&block
|
71
|
+
)
|
65
72
|
_attribute(
|
66
73
|
block: (block if block_given?),
|
74
|
+
deserialize: deserialize,
|
67
75
|
ledger_attribute: ledger_attribute,
|
68
76
|
resource_attribute: resource_attribute,
|
77
|
+
serialize: serialize,
|
69
78
|
type: type
|
70
79
|
)
|
71
80
|
end
|
@@ -83,6 +92,15 @@ module LedgerSync
|
|
83
92
|
)
|
84
93
|
end
|
85
94
|
|
95
|
+
def self.references_one(ledger_attribute:, resource_attribute:, serializer:)
|
96
|
+
_attribute(
|
97
|
+
ledger_attribute: ledger_attribute,
|
98
|
+
resource_attribute: resource_attribute,
|
99
|
+
serializer: serializer,
|
100
|
+
type: LedgerSerializerType::ReferencesOneType
|
101
|
+
)
|
102
|
+
end
|
103
|
+
|
86
104
|
def self.id(ledger_attribute:, resource_attribute:, &block)
|
87
105
|
@id ||= _attribute(
|
88
106
|
block: (block if block_given?),
|
@@ -98,13 +116,25 @@ module LedgerSync
|
|
98
116
|
)
|
99
117
|
end
|
100
118
|
|
101
|
-
private_class_method def self._build_attribute(
|
119
|
+
private_class_method def self._build_attribute(
|
120
|
+
block: nil,
|
121
|
+
deserialize: true,
|
122
|
+
id: false,
|
123
|
+
ledger_attribute:,
|
124
|
+
resource_attribute: nil,
|
125
|
+
resource_class: nil,
|
126
|
+
serialize: true,
|
127
|
+
serializer: nil,
|
128
|
+
type: LedgerSerializerType::ValueType
|
129
|
+
)
|
102
130
|
LedgerSerializerAttribute.new(
|
103
131
|
id: id,
|
104
132
|
block: block,
|
133
|
+
deserialize: deserialize,
|
105
134
|
ledger_attribute: ledger_attribute,
|
106
135
|
resource_attribute: resource_attribute,
|
107
136
|
resource_class: resource_class,
|
137
|
+
serialize: serialize,
|
108
138
|
serializer: serializer,
|
109
139
|
type: type
|
110
140
|
)
|
@@ -7,21 +7,35 @@ module LedgerSync
|
|
7
7
|
module Adaptors
|
8
8
|
class LedgerSerializerAttribute
|
9
9
|
attr_reader :block,
|
10
|
+
:deserialize,
|
10
11
|
:id,
|
11
12
|
:ledger_attribute,
|
12
13
|
:resource_attribute,
|
13
14
|
:resource_class,
|
15
|
+
:serialize,
|
14
16
|
:serializer,
|
15
17
|
:type
|
16
18
|
|
17
|
-
def initialize(
|
19
|
+
def initialize(
|
20
|
+
block: nil,
|
21
|
+
deserialize: true,
|
22
|
+
id: false,
|
23
|
+
ledger_attribute:,
|
24
|
+
resource_attribute: nil,
|
25
|
+
resource_class: nil,
|
26
|
+
serialize: true,
|
27
|
+
serializer: nil,
|
28
|
+
type: LedgerSerializerType::ValueType
|
29
|
+
)
|
18
30
|
raise 'block and resource_attribute cannot both be present' unless block.nil? || resource_attribute.nil?
|
19
31
|
|
20
32
|
@block = block
|
33
|
+
@deserialize = deserialize
|
21
34
|
@id = id
|
22
35
|
@ledger_attribute = ledger_attribute.to_s
|
23
36
|
@resource_attribute = resource_attribute.to_s
|
24
37
|
@resource_class = resource_class
|
38
|
+
@serialize = serialize
|
25
39
|
@serializer = serializer
|
26
40
|
@type = type.new
|
27
41
|
end
|
@@ -30,6 +44,10 @@ module LedgerSync
|
|
30
44
|
block.call(resource)
|
31
45
|
end
|
32
46
|
|
47
|
+
def deserialize?
|
48
|
+
deserialize
|
49
|
+
end
|
50
|
+
|
33
51
|
# Make nested/dot calls (e.g. `vendor.ledger_id`)
|
34
52
|
def dot_value_for(resource:)
|
35
53
|
resource_attribute_dot_parts.inject(resource) { |r, dot_method| r&.send(dot_method) }
|
@@ -59,10 +77,18 @@ module LedgerSync
|
|
59
77
|
ledger_attribute_dot_parts.reverse.inject(value) { |a, n| { n => a } }
|
60
78
|
end
|
61
79
|
|
80
|
+
def reference?
|
81
|
+
references_many? || references_one?
|
82
|
+
end
|
83
|
+
|
62
84
|
def references_many?
|
63
85
|
type.is_a?(LedgerSerializerType::ReferencesManyType)
|
64
86
|
end
|
65
87
|
|
88
|
+
def references_one?
|
89
|
+
type.is_a?(LedgerSerializerType::ReferencesOneType)
|
90
|
+
end
|
91
|
+
|
66
92
|
def resource_attribute?
|
67
93
|
resource_attribute.present?
|
68
94
|
end
|
@@ -71,6 +97,10 @@ module LedgerSync
|
|
71
97
|
@resource_attribute_dot_parts ||= resource_attribute.split('.')
|
72
98
|
end
|
73
99
|
|
100
|
+
def serialize?
|
101
|
+
serialize
|
102
|
+
end
|
103
|
+
|
74
104
|
def value_from_local(resource:)
|
75
105
|
value = if block.nil?
|
76
106
|
dot_value_for(resource: resource)
|
@@ -78,7 +108,7 @@ module LedgerSync
|
|
78
108
|
block_value_for(resource: resource)
|
79
109
|
end
|
80
110
|
|
81
|
-
if
|
111
|
+
if reference?
|
82
112
|
type.convert_from_local(
|
83
113
|
serializer: serializer,
|
84
114
|
value: value
|
@@ -93,7 +123,7 @@ module LedgerSync
|
|
93
123
|
def value_from_ledger(hash:, resource:)
|
94
124
|
value = hash.dig(*ledger_attribute_dot_parts)
|
95
125
|
|
96
|
-
value = if
|
126
|
+
value = if reference?
|
97
127
|
type.convert_from_ledger(
|
98
128
|
resource_class: resource_class,
|
99
129
|
serializer: serializer,
|
@@ -4,9 +4,11 @@ module LedgerSync
|
|
4
4
|
module Adaptors
|
5
5
|
class LedgerSerializerAttributeSet
|
6
6
|
attr_reader :attributes,
|
7
|
+
:deserializable_attributes,
|
7
8
|
:id_attribute,
|
8
9
|
:ledger_attribute_keyed_hash,
|
9
10
|
:resource_attribute_keyed_hash,
|
11
|
+
:serializable_attributes,
|
10
12
|
:serializer_class
|
11
13
|
|
12
14
|
delegate :[],
|
@@ -17,8 +19,10 @@ module LedgerSync
|
|
17
19
|
|
18
20
|
def initialize(serializer_class:)
|
19
21
|
@attributes = []
|
22
|
+
@deserializable_attributes = []
|
20
23
|
@ledger_attribute_keyed_hash = {}
|
21
24
|
@resource_attribute_keyed_hash = {}
|
25
|
+
@serializable_attributes = []
|
22
26
|
@serializer_class = serializer_class
|
23
27
|
end
|
24
28
|
|
@@ -37,6 +41,9 @@ module LedgerSync
|
|
37
41
|
resource_attribute_keyed_hash[attribute.resource_attribute.to_s] = attribute
|
38
42
|
end
|
39
43
|
|
44
|
+
serializable_attributes << attribute if attribute.serialize?
|
45
|
+
deserializable_attributes << attribute if attribute.deserialize?
|
46
|
+
|
40
47
|
# TODO: Can make this validate something like `expense.vendor.id`
|
41
48
|
# raise "#{resource_attribute} is not an attribute of the resource #{_inferred_resource_class}" if !resource_attribute.nil? && !_inferred_resource_class.serialize_attribute?(resource_attribute)
|
42
49
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module LedgerSync
|
4
|
+
module Adaptors
|
5
|
+
module LedgerSerializerType
|
6
|
+
class ReferencesOneType < ValueType
|
7
|
+
def convert_from_ledger(resource_class: nil, serializer:, value:)
|
8
|
+
return if value.nil?
|
9
|
+
|
10
|
+
resource_class ||= serializer.inferred_resource_class
|
11
|
+
serializer.new(resource: resource_class.new).deserialize(hash: value)
|
12
|
+
end
|
13
|
+
|
14
|
+
def convert_from_local(serializer:, value:)
|
15
|
+
return if value.nil?
|
16
|
+
|
17
|
+
serializer.new(resource: value).to_ledger_hash
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -6,7 +6,7 @@ module LedgerSync
|
|
6
6
|
module InferLedgerSerializerMixin
|
7
7
|
module ClassMethods
|
8
8
|
def inferred_ledger_serializer(resource:)
|
9
|
-
|
9
|
+
inferred_ledger_serializer_class.new(
|
10
10
|
resource: resource
|
11
11
|
)
|
12
12
|
end
|
@@ -15,7 +15,7 @@ module LedgerSync
|
|
15
15
|
required(:account_type).maybe(:string)
|
16
16
|
required(:account_sub_type).maybe(:string)
|
17
17
|
required(:number).filled(:integer)
|
18
|
-
required(:currency).filled(:
|
18
|
+
required(:currency).filled(:hash, Types::Reference)
|
19
19
|
required(:description).maybe(:string)
|
20
20
|
required(:active).maybe(:bool)
|
21
21
|
end
|
@@ -15,7 +15,7 @@ module LedgerSync
|
|
15
15
|
required(:account_type).maybe(:string)
|
16
16
|
required(:account_sub_type).maybe(:string)
|
17
17
|
required(:number).maybe(:integer)
|
18
|
-
required(:currency).maybe(:
|
18
|
+
required(:currency).maybe(:hash, Types::Reference)
|
19
19
|
required(:description).maybe(:string)
|
20
20
|
required(:active).maybe(:bool)
|
21
21
|
end
|
@@ -1,19 +1,35 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative '../currency/ledger_serializer'
|
4
|
+
|
3
5
|
module LedgerSync
|
4
6
|
module Adaptors
|
5
7
|
module QuickBooksOnline
|
6
8
|
module Account
|
7
9
|
class LedgerSerializer < QuickBooksOnline::LedgerSerializer
|
8
|
-
attribute ledger_attribute: 'Id',
|
9
|
-
|
10
|
-
attribute ledger_attribute: '
|
11
|
-
|
12
|
-
attribute ledger_attribute: '
|
13
|
-
|
14
|
-
|
15
|
-
attribute ledger_attribute: '
|
16
|
-
|
10
|
+
attribute ledger_attribute: 'Id',
|
11
|
+
resource_attribute: :ledger_id
|
12
|
+
attribute ledger_attribute: 'Name',
|
13
|
+
resource_attribute: :name
|
14
|
+
attribute ledger_attribute: 'AccountType',
|
15
|
+
resource_attribute: :account_type,
|
16
|
+
type: LedgerSerializerType::AccountType
|
17
|
+
attribute ledger_attribute: 'AccountSubType',
|
18
|
+
resource_attribute: :account_sub_type,
|
19
|
+
type: LedgerSerializerType::AccountSubType
|
20
|
+
attribute ledger_attribute: 'AcctNum',
|
21
|
+
resource_attribute: :number
|
22
|
+
attribute ledger_attribute: 'Classification',
|
23
|
+
resource_attribute: :classification,
|
24
|
+
type: LedgerSerializerType::ClassificationType
|
25
|
+
attribute ledger_attribute: 'Description',
|
26
|
+
resource_attribute: :description
|
27
|
+
attribute ledger_attribute: 'Active',
|
28
|
+
resource_attribute: :active
|
29
|
+
|
30
|
+
references_one ledger_attribute: :CurrencyRef,
|
31
|
+
resource_attribute: :currency,
|
32
|
+
serializer: Currency::LedgerSerializer
|
17
33
|
end
|
18
34
|
end
|
19
35
|
end
|
@@ -11,7 +11,7 @@ module LedgerSync
|
|
11
11
|
required(:account_type).filled(:string)
|
12
12
|
required(:active).maybe(:bool)
|
13
13
|
required(:classification).filled(:string)
|
14
|
-
required(:currency).maybe(:
|
14
|
+
required(:currency).maybe(:hash, Types::Reference)
|
15
15
|
required(:description).maybe(:string)
|
16
16
|
required(:ledger_id).value(:nil)
|
17
17
|
required(:name).filled(:string)
|
@@ -13,7 +13,7 @@ module LedgerSync
|
|
13
13
|
required(:account_type).maybe(:string)
|
14
14
|
required(:account_sub_type).maybe(:string)
|
15
15
|
required(:number).maybe(:integer)
|
16
|
-
required(:currency).maybe(:
|
16
|
+
required(:currency).maybe(:hash, Types::Reference)
|
17
17
|
required(:description).maybe(:string)
|
18
18
|
required(:active).maybe(:bool)
|
19
19
|
end
|
@@ -17,7 +17,7 @@ module LedgerSync
|
|
17
17
|
required(:account_type).filled(:string)
|
18
18
|
required(:account_sub_type).filled(:string)
|
19
19
|
required(:number).maybe(:integer)
|
20
|
-
required(:currency).maybe(:
|
20
|
+
required(:currency).maybe(:hash, Types::Reference)
|
21
21
|
required(:description).maybe(:string)
|
22
22
|
required(:active).maybe(:bool)
|
23
23
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative '../bill_line_item/ledger_serializer'
|
4
|
+
require_relative '../currency/ledger_serializer'
|
4
5
|
|
5
6
|
module LedgerSync
|
6
7
|
module Adaptors
|
@@ -9,7 +10,9 @@ module LedgerSync
|
|
9
10
|
class LedgerSerializer < QuickBooksOnline::LedgerSerializer
|
10
11
|
id
|
11
12
|
|
12
|
-
|
13
|
+
references_one ledger_attribute: :CurrencyRef,
|
14
|
+
resource_attribute: :currency,
|
15
|
+
serializer: Currency::LedgerSerializer
|
13
16
|
|
14
17
|
attribute ledger_attribute: 'DueDate',
|
15
18
|
resource_attribute: :due_date,
|
@@ -8,7 +8,7 @@ module LedgerSync
|
|
8
8
|
params do
|
9
9
|
required(:external_id).maybe(:string)
|
10
10
|
optional(:account).hash(Types::Reference)
|
11
|
-
optional(:currency).
|
11
|
+
optional(:currency).hash(Types::Reference)
|
12
12
|
optional(:due_date).maybe(:date?)
|
13
13
|
optional(:ledger_id).value(:nil)
|
14
14
|
required(:line_items).array(Types::Reference)
|
@@ -8,7 +8,7 @@ module LedgerSync
|
|
8
8
|
schema do
|
9
9
|
required(:external_id).maybe(:string)
|
10
10
|
optional(:account).hash(Types::Reference)
|
11
|
-
|
11
|
+
required(:currency).maybe(:hash, Types::Reference)
|
12
12
|
optional(:due_date).maybe(:date?)
|
13
13
|
optional(:line_items).array(Types::Reference)
|
14
14
|
required(:ledger_id).filled(:string)
|
@@ -8,7 +8,7 @@ module LedgerSync
|
|
8
8
|
schema do
|
9
9
|
required(:external_id).maybe(:string)
|
10
10
|
optional(:account).hash(Types::Reference)
|
11
|
-
optional(:currency).
|
11
|
+
optional(:currency).hash(Types::Reference)
|
12
12
|
optional(:due_date).maybe(:date?)
|
13
13
|
required(:line_items).array(Types::Reference)
|
14
14
|
required(:ledger_id).filled(:string)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module LedgerSync
|
4
|
+
module Adaptors
|
5
|
+
module QuickBooksOnline
|
6
|
+
module Currency
|
7
|
+
class LedgerSerializer < QuickBooksOnline::LedgerSerializer
|
8
|
+
attribute ledger_attribute: :value,
|
9
|
+
resource_attribute: :symbol
|
10
|
+
|
11
|
+
attribute ledger_attribute: :name,
|
12
|
+
resource_attribute: :name
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative '../deposit_line_item/ledger_serializer'
|
4
|
+
require_relative '../currency/ledger_serializer'
|
4
5
|
|
5
6
|
module LedgerSync
|
6
7
|
module Adaptors
|
@@ -9,8 +10,9 @@ module LedgerSync
|
|
9
10
|
class LedgerSerializer < QuickBooksOnline::LedgerSerializer
|
10
11
|
id
|
11
12
|
|
12
|
-
|
13
|
-
|
13
|
+
references_one ledger_attribute: :CurrencyRef,
|
14
|
+
resource_attribute: :currency,
|
15
|
+
serializer: Currency::LedgerSerializer
|
14
16
|
|
15
17
|
attribute ledger_attribute: 'TxnDate',
|
16
18
|
resource_attribute: :transaction_date,
|
@@ -9,7 +9,7 @@ module LedgerSync
|
|
9
9
|
required(:external_id).maybe(:string)
|
10
10
|
required(:ledger_id).value(:nil)
|
11
11
|
required(:account).hash(Types::Reference)
|
12
|
-
required(:currency).filled(:
|
12
|
+
required(:currency).filled(:hash, Types::Reference)
|
13
13
|
required(:department).hash(Types::Reference)
|
14
14
|
required(:memo).filled(:string)
|
15
15
|
required(:transaction_date).filled(:date?)
|
@@ -9,7 +9,7 @@ module LedgerSync
|
|
9
9
|
required(:external_id).maybe(:string)
|
10
10
|
required(:ledger_id).filled(:string)
|
11
11
|
required(:account).hash(Types::Reference)
|
12
|
-
required(:currency).maybe(:
|
12
|
+
required(:currency).maybe(:hash, Types::Reference)
|
13
13
|
required(:department).hash(Types::Reference)
|
14
14
|
required(:memo).maybe(:string)
|
15
15
|
required(:transaction_date).filled(:date?)
|
@@ -11,7 +11,7 @@ module LedgerSync
|
|
11
11
|
required(:external_id).maybe(:string)
|
12
12
|
required(:ledger_id).filled(:string)
|
13
13
|
required(:account).hash(Types::Reference)
|
14
|
-
required(:currency).filled(:
|
14
|
+
required(:currency).filled(:hash, Types::Reference)
|
15
15
|
required(:department).hash(Types::Reference)
|
16
16
|
required(:memo).filled(:string)
|
17
17
|
required(:transaction_date).filled(:date?)
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative '../expense_line_item/ledger_serializer'
|
4
|
+
require_relative '../currency/ledger_serializer'
|
4
5
|
|
5
6
|
module LedgerSync
|
6
7
|
module Adaptors
|
@@ -10,8 +11,9 @@ module LedgerSync
|
|
10
11
|
id ledger_attribute: 'Id',
|
11
12
|
resource_attribute: :ledger_id
|
12
13
|
|
13
|
-
|
14
|
-
|
14
|
+
references_one ledger_attribute: :CurrencyRef,
|
15
|
+
resource_attribute: :currency,
|
16
|
+
serializer: Currency::LedgerSerializer
|
15
17
|
|
16
18
|
attribute ledger_attribute: 'PaymentType',
|
17
19
|
resource_attribute: :payment_type,
|
@@ -8,7 +8,7 @@ module LedgerSync
|
|
8
8
|
params do
|
9
9
|
required(:external_id).maybe(:string)
|
10
10
|
required(:account).hash(Types::Reference)
|
11
|
-
optional(:currency).
|
11
|
+
optional(:currency).hash(Types::Reference)
|
12
12
|
optional(:exchange_rate).maybe(:float)
|
13
13
|
optional(:ledger_id).value(:nil)
|
14
14
|
required(:line_items).array(Types::Reference)
|
@@ -8,7 +8,7 @@ module LedgerSync
|
|
8
8
|
schema do
|
9
9
|
required(:external_id).maybe(:string)
|
10
10
|
optional(:account).hash(Types::Reference)
|
11
|
-
|
11
|
+
required(:currency).maybe(:hash, Types::Reference)
|
12
12
|
optional(:exchange_rate).maybe(:float)
|
13
13
|
required(:ledger_id).filled(:string)
|
14
14
|
optional(:line_items).array(Types::Reference)
|
@@ -8,7 +8,7 @@ module LedgerSync
|
|
8
8
|
schema do
|
9
9
|
required(:external_id).maybe(:string)
|
10
10
|
required(:account).hash(Types::Reference)
|
11
|
-
optional(:currency).
|
11
|
+
optional(:currency).hash(Types::Reference)
|
12
12
|
optional(:exchange_rate).maybe(:float)
|
13
13
|
required(:ledger_id).filled(:string)
|
14
14
|
required(:line_items).array(Types::Reference)
|
@@ -9,8 +9,9 @@ module LedgerSync
|
|
9
9
|
class LedgerSerializer < QuickBooksOnline::LedgerSerializer
|
10
10
|
id
|
11
11
|
|
12
|
-
|
13
|
-
|
12
|
+
references_one ledger_attribute: :CurrencyRef,
|
13
|
+
resource_attribute: :currency,
|
14
|
+
serializer: Currency::LedgerSerializer
|
14
15
|
|
15
16
|
attribute ledger_attribute: 'TxnDate',
|
16
17
|
resource_attribute: :transaction_date,
|
@@ -10,7 +10,7 @@ module LedgerSync
|
|
10
10
|
params do
|
11
11
|
required(:external_id).maybe(:string)
|
12
12
|
optional(:account).hash(Types::Reference)
|
13
|
-
required(:currency).filled(:
|
13
|
+
required(:currency).filled(:hash, Types::Reference)
|
14
14
|
required(:customer).hash(Types::Reference)
|
15
15
|
optional(:deposit).maybe(:integer)
|
16
16
|
required(:ledger_id).value(:nil)
|
@@ -8,7 +8,7 @@ module LedgerSync
|
|
8
8
|
schema do
|
9
9
|
required(:external_id).maybe(:string)
|
10
10
|
optional(:account).hash(Types::Reference)
|
11
|
-
|
11
|
+
required(:currency).maybe(:hash, Types::Reference)
|
12
12
|
optional(:customer).hash(Types::Reference)
|
13
13
|
optional(:deposit).maybe(:integer)
|
14
14
|
required(:ledger_id).filled(:string)
|
@@ -8,7 +8,7 @@ module LedgerSync
|
|
8
8
|
schema do
|
9
9
|
required(:external_id).maybe(:string)
|
10
10
|
optional(:account).hash(Types::Reference)
|
11
|
-
required(:currency).filled(:
|
11
|
+
required(:currency).filled(:hash, Types::Reference)
|
12
12
|
required(:customer).hash(Types::Reference)
|
13
13
|
optional(:deposit).maybe(:integer)
|
14
14
|
required(:ledger_id).filled(:string)
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative '../currency/ledger_serializer'
|
3
4
|
require_relative '../journal_entry_line_item/ledger_serializer'
|
4
5
|
|
5
6
|
module LedgerSync
|
@@ -9,8 +10,9 @@ module LedgerSync
|
|
9
10
|
class LedgerSerializer < QuickBooksOnline::LedgerSerializer
|
10
11
|
id
|
11
12
|
|
12
|
-
|
13
|
-
|
13
|
+
references_one ledger_attribute: :CurrencyRef,
|
14
|
+
resource_attribute: :currency,
|
15
|
+
serializer: Currency::LedgerSerializer
|
14
16
|
|
15
17
|
attribute ledger_attribute: 'TxnDate',
|
16
18
|
resource_attribute: :transaction_date,
|
@@ -7,7 +7,7 @@ module LedgerSync
|
|
7
7
|
class Contract < LedgerSync::Adaptors::Contract
|
8
8
|
params do
|
9
9
|
required(:external_id).maybe(:string)
|
10
|
-
optional(:currency).
|
10
|
+
optional(:currency).hash(Types::Reference)
|
11
11
|
required(:ledger_id).value(:nil)
|
12
12
|
optional(:line_items).array(Types::Reference)
|
13
13
|
optional(:memo).filled(:string)
|
@@ -7,7 +7,7 @@ module LedgerSync
|
|
7
7
|
class Contract < LedgerSync::Adaptors::Contract
|
8
8
|
schema do
|
9
9
|
required(:external_id).maybe(:string)
|
10
|
-
|
10
|
+
required(:currency).maybe(:hash, Types::Reference)
|
11
11
|
required(:ledger_id).filled(:string)
|
12
12
|
optional(:line_items).array(Types::Reference)
|
13
13
|
optional(:memo).maybe(:string)
|
@@ -7,7 +7,7 @@ module LedgerSync
|
|
7
7
|
class Contract < LedgerSync::Adaptors::Contract
|
8
8
|
schema do
|
9
9
|
required(:external_id).maybe(:string)
|
10
|
-
optional(:currency).
|
10
|
+
optional(:currency).hash(Types::Reference)
|
11
11
|
required(:ledger_id).filled(:string)
|
12
12
|
optional(:line_items).array(Types::Reference)
|
13
13
|
optional(:memo).filled(:string)
|
@@ -25,7 +25,7 @@ module LedgerSync
|
|
25
25
|
def merge_resources_for_full_update(hash:, ledger_resource:)
|
26
26
|
merged_resource = resource.dup
|
27
27
|
|
28
|
-
self.class.attributes.each do |ledger_serializer_attribute|
|
28
|
+
self.class.attributes.deserializable_attributes.each do |ledger_serializer_attribute|
|
29
29
|
next unless ledger_serializer_attribute.references_many?
|
30
30
|
|
31
31
|
resources_from_ledger = attribute_value_from_ledger(
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative '../currency/ledger_serializer'
|
3
4
|
require_relative '../payment_line_item/ledger_serializer'
|
4
5
|
|
5
6
|
module LedgerSync
|
@@ -13,8 +14,9 @@ module LedgerSync
|
|
13
14
|
resource_attribute: :amount,
|
14
15
|
type: LedgerSerializerType::AmountType
|
15
16
|
|
16
|
-
|
17
|
-
|
17
|
+
references_one ledger_attribute: :CurrencyRef,
|
18
|
+
resource_attribute: :currency,
|
19
|
+
serializer: Currency::LedgerSerializer
|
18
20
|
|
19
21
|
attribute ledger_attribute: 'CustomerRef.value',
|
20
22
|
resource_attribute: 'customer.ledger_id'
|
@@ -39,8 +41,8 @@ module LedgerSync
|
|
39
41
|
type: LedgerSerializerType::DateType
|
40
42
|
|
41
43
|
references_many ledger_attribute: 'Line',
|
42
|
-
|
43
|
-
|
44
|
+
resource_attribute: :line_items,
|
45
|
+
serializer: PaymentLineItem::LedgerSerializer
|
44
46
|
end
|
45
47
|
end
|
46
48
|
end
|
@@ -11,7 +11,7 @@ module LedgerSync
|
|
11
11
|
required(:external_id).maybe(:string)
|
12
12
|
optional(:account).hash(Types::Reference)
|
13
13
|
required(:amount).filled(:integer)
|
14
|
-
required(:currency).filled(:
|
14
|
+
required(:currency).filled(:hash, Types::Reference)
|
15
15
|
required(:customer).hash(Types::Reference)
|
16
16
|
optional(:deposit_account).hash(Types::Reference)
|
17
17
|
optional(:exchange_rate).maybe(:float)
|
@@ -9,7 +9,7 @@ module LedgerSync
|
|
9
9
|
required(:external_id).maybe(:string)
|
10
10
|
optional(:account).hash(Types::Reference)
|
11
11
|
optional(:amount).maybe(:integer)
|
12
|
-
|
12
|
+
required(:currency).maybe(:hash, Types::Reference)
|
13
13
|
optional(:customer).hash(Types::Reference)
|
14
14
|
optional(:deposit_account).hash(Types::Reference)
|
15
15
|
optional(:exchange_rate).maybe(:float)
|
@@ -9,7 +9,7 @@ module LedgerSync
|
|
9
9
|
required(:external_id).maybe(:string)
|
10
10
|
optional(:account).hash(Types::Reference)
|
11
11
|
required(:amount).filled(:integer)
|
12
|
-
required(:currency).filled(:
|
12
|
+
required(:currency).filled(:hash, Types::Reference)
|
13
13
|
required(:customer).hash(Types::Reference)
|
14
14
|
optional(:deposit_account).hash(Types::Reference)
|
15
15
|
optional(:exchange_rate).maybe(:float)
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative '../currency/ledger_serializer'
|
4
|
+
|
3
5
|
module LedgerSync
|
4
6
|
module Adaptors
|
5
7
|
module QuickBooksOnline
|
@@ -24,8 +26,9 @@ module LedgerSync
|
|
24
26
|
resource_attribute: :transaction_date,
|
25
27
|
type: LedgerSerializerType::DateType
|
26
28
|
|
27
|
-
|
28
|
-
|
29
|
+
references_one ledger_attribute: :CurrencyRef,
|
30
|
+
resource_attribute: :currency,
|
31
|
+
serializer: Currency::LedgerSerializer
|
29
32
|
end
|
30
33
|
end
|
31
34
|
end
|
@@ -11,7 +11,7 @@ module LedgerSync
|
|
11
11
|
required(:from_account).hash(Types::Reference)
|
12
12
|
required(:to_account).hash(Types::Reference)
|
13
13
|
required(:amount).filled(:integer)
|
14
|
-
required(:currency).filled(:
|
14
|
+
required(:currency).filled(:hash, Types::Reference)
|
15
15
|
required(:memo).filled(:string)
|
16
16
|
required(:transaction_date).filled(:date?)
|
17
17
|
end
|
@@ -11,7 +11,7 @@ module LedgerSync
|
|
11
11
|
required(:from_account).hash(Types::Reference)
|
12
12
|
required(:to_account).hash(Types::Reference)
|
13
13
|
required(:amount).maybe(:integer)
|
14
|
-
required(:currency).maybe(:
|
14
|
+
required(:currency).maybe(:hash, Types::Reference)
|
15
15
|
required(:memo).maybe(:string)
|
16
16
|
required(:transaction_date).maybe(:date?)
|
17
17
|
end
|
@@ -13,7 +13,7 @@ module LedgerSync
|
|
13
13
|
required(:from_account).hash(Types::Reference)
|
14
14
|
required(:to_account).hash(Types::Reference)
|
15
15
|
required(:amount).filled(:integer)
|
16
|
-
required(:currency).filled(:
|
16
|
+
required(:currency).filled(:hash, Types::Reference)
|
17
17
|
required(:memo).filled(:string)
|
18
18
|
required(:transaction_date).filled(:date?)
|
19
19
|
end
|
@@ -13,7 +13,7 @@ module LedgerSync
|
|
13
13
|
required(:account_type).filled(:string)
|
14
14
|
required(:account_sub_type).filled(:string)
|
15
15
|
required(:number).maybe(:integer)
|
16
|
-
required(:currency).maybe(:
|
16
|
+
required(:currency).maybe(:hash, Types::Reference)
|
17
17
|
required(:description).maybe(:string)
|
18
18
|
required(:active).maybe(:bool)
|
19
19
|
end
|
@@ -13,7 +13,7 @@ module LedgerSync
|
|
13
13
|
required(:account_type).maybe(:string)
|
14
14
|
required(:account_sub_type).maybe(:string)
|
15
15
|
required(:number).maybe(:integer)
|
16
|
-
required(:currency).maybe(:
|
16
|
+
required(:currency).maybe(:hash, Types::Reference)
|
17
17
|
required(:description).maybe(:string)
|
18
18
|
required(:active).maybe(:bool)
|
19
19
|
end
|
@@ -13,7 +13,7 @@ module LedgerSync
|
|
13
13
|
required(:account_type).maybe(:string)
|
14
14
|
required(:account_sub_type).maybe(:string)
|
15
15
|
required(:number).maybe(:integer)
|
16
|
-
required(:currency).maybe(:
|
16
|
+
required(:currency).maybe(:hash, Types::Reference)
|
17
17
|
required(:description).maybe(:string)
|
18
18
|
required(:active).maybe(:bool)
|
19
19
|
end
|
@@ -13,7 +13,7 @@ module LedgerSync
|
|
13
13
|
required(:account_type).filled(:string)
|
14
14
|
required(:account_sub_type).filled(:string)
|
15
15
|
required(:number).maybe(:integer)
|
16
|
-
required(:currency).maybe(:
|
16
|
+
required(:currency).maybe(:hash, Types::Reference)
|
17
17
|
required(:description).maybe(:string)
|
18
18
|
required(:active).maybe(:bool)
|
19
19
|
end
|
@@ -13,7 +13,7 @@ module LedgerSync
|
|
13
13
|
required(:account_type).filled(:string)
|
14
14
|
required(:account_sub_type).filled(:string)
|
15
15
|
required(:number).maybe(:integer)
|
16
|
-
required(:currency).maybe(:
|
16
|
+
required(:currency).maybe(:hash, Types::Reference)
|
17
17
|
required(:description).maybe(:string)
|
18
18
|
required(:active).maybe(:bool)
|
19
19
|
end
|
@@ -12,7 +12,7 @@ module LedgerSync
|
|
12
12
|
required(:ledger_id).value(:nil)
|
13
13
|
required(:account).hash(Types::Reference)
|
14
14
|
required(:entity).hash(Types::Reference)
|
15
|
-
required(:currency).filled(:
|
15
|
+
required(:currency).filled(:hash, Types::Reference)
|
16
16
|
required(:memo).filled(:string)
|
17
17
|
required(:payment_type).filled(:string)
|
18
18
|
required(:transaction_date).filled(:date?)
|
@@ -12,7 +12,7 @@ module LedgerSync
|
|
12
12
|
required(:ledger_id).filled(:string)
|
13
13
|
required(:account).hash(Types::Reference)
|
14
14
|
required(:entity).hash(Types::Reference)
|
15
|
-
required(:currency).maybe(:
|
15
|
+
required(:currency).maybe(:hash, Types::Reference)
|
16
16
|
required(:memo).maybe(:string)
|
17
17
|
required(:payment_type).maybe(:string)
|
18
18
|
required(:transaction_date).maybe(:date?)
|
@@ -10,7 +10,7 @@ module LedgerSync
|
|
10
10
|
required(:ledger_id).filled(:string)
|
11
11
|
required(:account).hash(Types::Reference)
|
12
12
|
required(:entity).hash(Types::Reference)
|
13
|
-
required(:currency).filled(:
|
13
|
+
required(:currency).filled(:hash, Types::Reference)
|
14
14
|
required(:memo).filled(:string)
|
15
15
|
required(:payment_type).filled(:string)
|
16
16
|
required(:transaction_date).filled(:date?)
|
@@ -9,7 +9,7 @@ module LedgerSync
|
|
9
9
|
required(:external_id).maybe(:string)
|
10
10
|
optional(:account).hash(Types::Reference)
|
11
11
|
required(:amount).filled(:integer)
|
12
|
-
required(:currency).filled(:
|
12
|
+
required(:currency).filled(:hash, Types::Reference)
|
13
13
|
required(:customer).hash(Types::Reference)
|
14
14
|
optional(:deposit_account).hash(Types::Reference)
|
15
15
|
optional(:exchange_rate).maybe(:float)
|
@@ -9,7 +9,7 @@ module LedgerSync
|
|
9
9
|
required(:external_id).maybe(:string)
|
10
10
|
optional(:account).hash(Types::Reference)
|
11
11
|
optional(:amount).maybe(:integer)
|
12
|
-
|
12
|
+
required(:currency).maybe(:hash, Types::Reference)
|
13
13
|
optional(:customer).hash(Types::Reference)
|
14
14
|
optional(:deposit_account).hash(Types::Reference)
|
15
15
|
optional(:exchange_rate).maybe(:float)
|
@@ -9,7 +9,7 @@ module LedgerSync
|
|
9
9
|
required(:external_id).maybe(:string)
|
10
10
|
optional(:account).hash(Types::Reference)
|
11
11
|
required(:amount).filled(:integer)
|
12
|
-
required(:currency).filled(:
|
12
|
+
required(:currency).filled(:hash, Types::Reference)
|
13
13
|
required(:customer).hash(Types::Reference)
|
14
14
|
optional(:deposit_account).hash(Types::Reference)
|
15
15
|
optional(:exchange_rate).maybe(:float)
|
@@ -11,7 +11,7 @@ module LedgerSync
|
|
11
11
|
required(:from_account).hash(Types::Reference)
|
12
12
|
required(:to_account).hash(Types::Reference)
|
13
13
|
required(:amount).filled(:integer)
|
14
|
-
required(:currency).filled(:
|
14
|
+
required(:currency).filled(:hash, Types::Reference)
|
15
15
|
required(:memo).filled(:string)
|
16
16
|
required(:transaction_date).filled(:date?)
|
17
17
|
end
|
@@ -11,7 +11,7 @@ module LedgerSync
|
|
11
11
|
required(:from_account).hash(Types::Reference)
|
12
12
|
required(:to_account).hash(Types::Reference)
|
13
13
|
required(:amount).maybe(:integer)
|
14
|
-
required(:currency).maybe(:
|
14
|
+
required(:currency).maybe(:hash, Types::Reference)
|
15
15
|
required(:memo).maybe(:string)
|
16
16
|
required(:transaction_date).maybe(:date?)
|
17
17
|
end
|
@@ -11,7 +11,7 @@ module LedgerSync
|
|
11
11
|
required(:from_account).hash(Types::Reference)
|
12
12
|
required(:to_account).hash(Types::Reference)
|
13
13
|
required(:amount).filled(:integer)
|
14
|
-
required(:currency).filled(:
|
14
|
+
required(:currency).filled(:hash, Types::Reference)
|
15
15
|
required(:memo).filled(:string)
|
16
16
|
required(:transaction_date).filled(:date?)
|
17
17
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative 'currency'
|
4
|
+
|
3
5
|
module LedgerSync
|
4
6
|
class Account < LedgerSync::Resource
|
5
7
|
attribute :name, type: Type::String
|
@@ -7,8 +9,9 @@ module LedgerSync
|
|
7
9
|
attribute :account_type, type: Type::String
|
8
10
|
attribute :account_sub_type, type: Type::String
|
9
11
|
attribute :number, type: Type::String
|
10
|
-
attribute :currency, type: Type::String
|
11
12
|
attribute :description, type: Type::String
|
12
13
|
attribute :active, type: Type::Boolean
|
14
|
+
|
15
|
+
references_one :currency, to: Currency
|
13
16
|
end
|
14
17
|
end
|
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
require_relative 'account'
|
4
4
|
require_relative 'bill_line_item'
|
5
|
+
require_relative 'currency'
|
5
6
|
require_relative 'vendor'
|
6
7
|
|
7
8
|
module LedgerSync
|
8
9
|
class Bill < LedgerSync::Resource
|
9
|
-
attribute :currency, type: Type::String
|
10
10
|
attribute :memo, type: Type::String
|
11
11
|
attribute :transaction_date, type: Type::Date
|
12
12
|
attribute :due_date, type: Type::Date
|
@@ -14,6 +14,7 @@ module LedgerSync
|
|
14
14
|
|
15
15
|
references_one :vendor, to: Vendor
|
16
16
|
references_one :account, to: Account
|
17
|
+
references_one :currency, to: Currency
|
17
18
|
|
18
19
|
references_many :line_items, to: BillLineItem
|
19
20
|
|
@@ -1,18 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'account'
|
4
|
+
require_relative 'currency'
|
4
5
|
require_relative 'department'
|
5
6
|
require_relative 'deposit_line_item'
|
6
7
|
|
7
8
|
module LedgerSync
|
8
9
|
class Deposit < LedgerSync::Resource
|
9
|
-
attribute :currency, type: Type::String
|
10
10
|
attribute :memo, type: Type::String
|
11
11
|
attribute :transaction_date, type: Type::Date
|
12
12
|
attribute :exchange_rate, type: Type::Float
|
13
13
|
|
14
14
|
references_one :account, to: Account
|
15
15
|
references_one :department, to: Department
|
16
|
+
references_one :currency, to: Currency
|
16
17
|
|
17
18
|
references_many :line_items, to: DepositLineItem
|
18
19
|
|
@@ -1,13 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'account'
|
4
|
+
require_relative 'currency'
|
4
5
|
require_relative 'customer'
|
5
6
|
require_relative 'expense_line_item'
|
6
7
|
require_relative 'vendor'
|
7
8
|
|
8
9
|
module LedgerSync
|
9
10
|
class Expense < LedgerSync::Resource
|
10
|
-
attribute :currency, type: Type::String
|
11
11
|
attribute :memo, type: Type::String
|
12
12
|
attribute :payment_type, type: Type::String
|
13
13
|
attribute :transaction_date, type: Type::Date
|
@@ -16,6 +16,7 @@ module LedgerSync
|
|
16
16
|
|
17
17
|
references_one :entity, to: [Customer, Vendor]
|
18
18
|
references_one :account, to: Account
|
19
|
+
references_one :currency, to: Currency
|
19
20
|
|
20
21
|
references_many :line_items, to: ExpenseLineItem
|
21
22
|
|
@@ -24,7 +25,7 @@ module LedgerSync
|
|
24
25
|
end
|
25
26
|
|
26
27
|
def name
|
27
|
-
"Purchase: #{amount} #{currency}"
|
28
|
+
"Purchase: #{amount} #{currency.try(:symbol)}"
|
28
29
|
end
|
29
30
|
end
|
30
31
|
end
|
@@ -1,18 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'account'
|
4
|
+
require_relative 'currency'
|
4
5
|
require_relative 'customer'
|
5
6
|
require_relative 'invoice_sales_line_item'
|
6
7
|
|
7
8
|
module LedgerSync
|
8
9
|
class Invoice < LedgerSync::Resource
|
9
|
-
attribute :currency, type: Type::String
|
10
10
|
attribute :memo, type: Type::String
|
11
11
|
attribute :transaction_date, type: Type::Date
|
12
12
|
attribute :deposit, type: Type::Integer
|
13
13
|
|
14
14
|
references_one :customer, to: Customer
|
15
15
|
references_one :account, to: Account
|
16
|
+
references_one :currency, to: Currency
|
16
17
|
|
17
18
|
references_many :line_items, to: InvoiceSalesLineItem
|
18
19
|
|
@@ -1,14 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative 'currency'
|
3
4
|
require_relative 'journal_entry_line_item'
|
4
5
|
|
5
6
|
module LedgerSync
|
6
7
|
class JournalEntry < LedgerSync::Resource
|
7
|
-
attribute :currency, type: Type::String
|
8
8
|
attribute :memo, type: Type::String
|
9
9
|
attribute :transaction_date, type: Type::Date
|
10
10
|
attribute :reference_number, type: Type::String
|
11
11
|
|
12
|
+
references_one :currency, to: Currency
|
13
|
+
|
12
14
|
references_many :line_items, to: JournalEntryLineItem
|
13
15
|
|
14
16
|
def name
|
@@ -1,13 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'account'
|
4
|
+
require_relative 'currency'
|
4
5
|
require_relative 'customer'
|
5
6
|
require_relative 'payment_line_item'
|
6
7
|
|
7
8
|
module LedgerSync
|
8
9
|
class Payment < LedgerSync::Resource
|
9
10
|
attribute :amount, type: Type::Integer
|
10
|
-
attribute :currency, type: Type::String
|
11
11
|
attribute :memo, type: Type::String
|
12
12
|
attribute :transaction_date, type: Type::Date
|
13
13
|
attribute :exchange_rate, type: Type::Float
|
@@ -16,6 +16,7 @@ module LedgerSync
|
|
16
16
|
references_one :customer, to: Customer
|
17
17
|
references_one :deposit_account, to: Account
|
18
18
|
references_one :account, to: Account
|
19
|
+
references_one :currency, to: Currency
|
19
20
|
|
20
21
|
references_many :line_items, to: PaymentLineItem
|
21
22
|
|
@@ -1,16 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'account'
|
4
|
+
require_relative 'currency'
|
4
5
|
|
5
6
|
module LedgerSync
|
6
7
|
class Transfer < LedgerSync::Resource
|
7
|
-
attribute :currency, type: Type::String
|
8
8
|
attribute :amount, type: Type::Integer
|
9
9
|
attribute :memo, type: Type::String
|
10
10
|
attribute :transaction_date, type: Type::Date
|
11
11
|
|
12
12
|
references_one :from_account, to: Account
|
13
13
|
references_one :to_account, to: Account
|
14
|
+
references_one :currency, to: Currency
|
14
15
|
|
15
16
|
def name
|
16
17
|
"Transaction: #{amount} #{currency}"
|
data/lib/ledger_sync/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ledger_sync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Jackson
|
@@ -413,6 +413,7 @@ files:
|
|
413
413
|
- lib/ledger_sync/adaptors/ledger_serializer_attribute_set.rb
|
414
414
|
- lib/ledger_sync/adaptors/ledger_serializer_type/mapping_type.rb
|
415
415
|
- lib/ledger_sync/adaptors/ledger_serializer_type/references_many_type.rb
|
416
|
+
- lib/ledger_sync/adaptors/ledger_serializer_type/references_one_type.rb
|
416
417
|
- lib/ledger_sync/adaptors/ledger_serializer_type/value_type.rb
|
417
418
|
- lib/ledger_sync/adaptors/mixins/infer_adaptor_class_mixin.rb
|
418
419
|
- lib/ledger_sync/adaptors/mixins/infer_ledger_serializer_mixin.rb
|
@@ -481,6 +482,7 @@ files:
|
|
481
482
|
- lib/ledger_sync/adaptors/quickbooks_online/bill/searcher.rb
|
482
483
|
- lib/ledger_sync/adaptors/quickbooks_online/bill_line_item/ledger_serializer.rb
|
483
484
|
- lib/ledger_sync/adaptors/quickbooks_online/config.rb
|
485
|
+
- lib/ledger_sync/adaptors/quickbooks_online/currency/ledger_serializer.rb
|
484
486
|
- lib/ledger_sync/adaptors/quickbooks_online/customer/ledger_serializer.rb
|
485
487
|
- lib/ledger_sync/adaptors/quickbooks_online/customer/operations/create.rb
|
486
488
|
- lib/ledger_sync/adaptors/quickbooks_online/customer/operations/find.rb
|