ledger_sync 1.1.1 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +2 -3
  5. data/lib/ledger_sync.rb +12 -6
  6. data/lib/ledger_sync/adaptors/ledger_serializer.rb +124 -0
  7. data/lib/ledger_sync/adaptors/ledger_serializer_attribute.rb +148 -0
  8. data/lib/ledger_sync/adaptors/ledger_serializer_attribute_set.rb +51 -0
  9. data/lib/ledger_sync/adaptors/ledger_serializer_type/mapping_type.rb +41 -0
  10. data/lib/ledger_sync/adaptors/ledger_serializer_type/references_many_type.rb +24 -0
  11. data/lib/ledger_sync/adaptors/ledger_serializer_type/value_type.rb +17 -0
  12. data/lib/ledger_sync/adaptors/operation.rb +15 -9
  13. data/lib/ledger_sync/adaptors/quickbooks_online/account/ledger_serializer.rb +21 -0
  14. data/lib/ledger_sync/adaptors/quickbooks_online/account/operations/create.rb +8 -36
  15. data/lib/ledger_sync/adaptors/quickbooks_online/account/operations/find.rb +1 -13
  16. data/lib/ledger_sync/adaptors/quickbooks_online/account/operations/update.rb +4 -35
  17. data/lib/ledger_sync/adaptors/quickbooks_online/account/searcher.rb +3 -44
  18. data/lib/ledger_sync/adaptors/quickbooks_online/adaptor.rb +75 -28
  19. data/lib/ledger_sync/adaptors/quickbooks_online/bill/ledger_serializer.rb +40 -0
  20. data/lib/ledger_sync/adaptors/quickbooks_online/bill/operations/create.rb +9 -48
  21. data/lib/ledger_sync/adaptors/quickbooks_online/bill/operations/find.rb +10 -21
  22. data/lib/ledger_sync/adaptors/quickbooks_online/bill/operations/update.rb +9 -52
  23. data/lib/ledger_sync/adaptors/quickbooks_online/bill_line_item/ledger_serializer.rb +27 -0
  24. data/lib/ledger_sync/adaptors/quickbooks_online/customer/ledger_serializer.rb +23 -0
  25. data/lib/ledger_sync/adaptors/quickbooks_online/customer/operations/create.rb +2 -25
  26. data/lib/ledger_sync/adaptors/quickbooks_online/customer/operations/find.rb +2 -14
  27. data/lib/ledger_sync/adaptors/quickbooks_online/customer/operations/update.rb +3 -30
  28. data/lib/ledger_sync/adaptors/quickbooks_online/deposit/ledger_serializer.rb +35 -0
  29. data/lib/ledger_sync/adaptors/quickbooks_online/deposit/operations/create.rb +2 -39
  30. data/lib/ledger_sync/adaptors/quickbooks_online/deposit/operations/find.rb +2 -14
  31. data/lib/ledger_sync/adaptors/quickbooks_online/deposit/operations/update.rb +4 -43
  32. data/lib/ledger_sync/adaptors/quickbooks_online/deposit_line_item/ledger_serializer.rb +27 -0
  33. data/lib/ledger_sync/adaptors/quickbooks_online/expense/ledger_serializer.rb +48 -0
  34. data/lib/ledger_sync/adaptors/quickbooks_online/expense/operations/create.rb +10 -51
  35. data/lib/ledger_sync/adaptors/quickbooks_online/expense/operations/find.rb +10 -22
  36. data/lib/ledger_sync/adaptors/quickbooks_online/expense/operations/update.rb +10 -55
  37. data/lib/ledger_sync/adaptors/quickbooks_online/expense_line_item/ledger_serializer.rb +27 -0
  38. data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry/ledger_serializer.rb +32 -0
  39. data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry/operations/create.rb +4 -37
  40. data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry/operations/find.rb +4 -15
  41. data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry/operations/update.rb +5 -42
  42. data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry_line_item/ledger_serializer.rb +31 -0
  43. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer.rb +103 -0
  44. data/lib/ledger_sync/adaptors/quickbooks_online/{account/mapping.rb → ledger_serializer_type/account_sub_type.rb} +128 -148
  45. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/account_type.rb +51 -0
  46. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/amount_type.rb +23 -0
  47. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/classification_type.rb +23 -0
  48. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/date_type.rb +23 -0
  49. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/journal_entry_line_item_type.rb +20 -0
  50. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/payment_type.rb +21 -0
  51. data/lib/ledger_sync/adaptors/quickbooks_online/operation.rb +2 -7
  52. data/lib/ledger_sync/adaptors/quickbooks_online/operation/create.rb +29 -0
  53. data/lib/ledger_sync/adaptors/quickbooks_online/operation/find.rb +31 -0
  54. data/lib/ledger_sync/adaptors/quickbooks_online/operation/full_update.rb +43 -0
  55. data/lib/ledger_sync/adaptors/quickbooks_online/operation/sparse_update.rb +29 -0
  56. data/lib/ledger_sync/adaptors/quickbooks_online/payment/ledger_serializer.rb +23 -0
  57. data/lib/ledger_sync/adaptors/quickbooks_online/payment/operations/create.rb +1 -24
  58. data/lib/ledger_sync/adaptors/quickbooks_online/payment/operations/find.rb +1 -13
  59. data/lib/ledger_sync/adaptors/quickbooks_online/payment/operations/update.rb +2 -29
  60. data/lib/ledger_sync/adaptors/quickbooks_online/transfer/ledger_serializer.rb +33 -0
  61. data/lib/ledger_sync/adaptors/quickbooks_online/transfer/operations/create.rb +1 -29
  62. data/lib/ledger_sync/adaptors/quickbooks_online/transfer/operations/find.rb +1 -13
  63. data/lib/ledger_sync/adaptors/quickbooks_online/transfer/operations/update.rb +4 -35
  64. data/lib/ledger_sync/adaptors/quickbooks_online/util/adaptor_error_parser.rb +2 -1
  65. data/lib/ledger_sync/adaptors/quickbooks_online/util/operation_error_parser.rb +2 -1
  66. data/lib/ledger_sync/adaptors/quickbooks_online/vendor/ledger_serializer.rb +25 -0
  67. data/lib/ledger_sync/adaptors/quickbooks_online/vendor/operations/create.rb +1 -23
  68. data/lib/ledger_sync/adaptors/quickbooks_online/vendor/operations/find.rb +1 -13
  69. data/lib/ledger_sync/adaptors/quickbooks_online/vendor/operations/update.rb +2 -29
  70. data/lib/ledger_sync/adaptors/test/account/operations/create.rb +5 -1
  71. data/lib/ledger_sync/adaptors/test/account/operations/find.rb +5 -1
  72. data/lib/ledger_sync/adaptors/test/account/operations/invalid.rb +1 -0
  73. data/lib/ledger_sync/adaptors/test/account/operations/update.rb +8 -2
  74. data/lib/ledger_sync/adaptors/test/account/operations/valid.rb +1 -0
  75. data/lib/ledger_sync/adaptors/test/customer/operations/create.rb +5 -1
  76. data/lib/ledger_sync/adaptors/test/customer/operations/find.rb +5 -1
  77. data/lib/ledger_sync/adaptors/test/customer/operations/invalid.rb +1 -0
  78. data/lib/ledger_sync/adaptors/test/customer/operations/update.rb +1 -24
  79. data/lib/ledger_sync/adaptors/test/customer/operations/valid.rb +3 -6
  80. data/lib/ledger_sync/adaptors/test/expense/operations/create.rb +8 -3
  81. data/lib/ledger_sync/adaptors/test/expense/operations/find.rb +4 -14
  82. data/lib/ledger_sync/adaptors/test/expense/operations/update.rb +2 -32
  83. data/lib/ledger_sync/adaptors/test/ledger_serializer.rb +64 -0
  84. data/lib/ledger_sync/adaptors/test/operation/create.rb +27 -0
  85. data/lib/ledger_sync/adaptors/test/operation/find.rb +29 -0
  86. data/lib/ledger_sync/adaptors/test/operation/update.rb +34 -0
  87. data/lib/ledger_sync/adaptors/test/payment/operations/create.rb +5 -1
  88. data/lib/ledger_sync/adaptors/test/payment/operations/find.rb +5 -1
  89. data/lib/ledger_sync/adaptors/test/payment/operations/update.rb +1 -23
  90. data/lib/ledger_sync/adaptors/test/transfer/operations/create.rb +1 -22
  91. data/lib/ledger_sync/adaptors/test/transfer/operations/find.rb +1 -13
  92. data/lib/ledger_sync/adaptors/test/transfer/operations/update.rb +1 -25
  93. data/lib/ledger_sync/adaptors/test/vendor/operations/create.rb +5 -1
  94. data/lib/ledger_sync/adaptors/test/vendor/operations/find.rb +7 -1
  95. data/lib/ledger_sync/adaptors/test/vendor/operations/invalid.rb +1 -0
  96. data/lib/ledger_sync/adaptors/test/vendor/operations/update.rb +1 -23
  97. data/lib/ledger_sync/adaptors/test/vendor/operations/valid.rb +1 -0
  98. data/lib/ledger_sync/error/adaptor_errors.rb +17 -5
  99. data/lib/ledger_sync/error/operation_errors.rb +12 -5
  100. data/lib/ledger_sync/error/resource_errors.rb +5 -1
  101. data/lib/ledger_sync/resource.rb +33 -6
  102. data/lib/ledger_sync/resource_attribute.rb +4 -0
  103. data/lib/ledger_sync/resource_attribute/dirty_mixin.rb +16 -0
  104. data/lib/ledger_sync/resource_attribute/mixin.rb +19 -7
  105. data/lib/ledger_sync/resource_attribute/reference/many.rb +55 -1
  106. data/lib/ledger_sync/resource_attribute_set.rb +6 -7
  107. data/lib/ledger_sync/resources/account.rb +1 -1
  108. data/lib/ledger_sync/resources/bill.rb +1 -0
  109. data/lib/ledger_sync/resources/bill_line_item.rb +2 -0
  110. data/lib/ledger_sync/resources/expense.rb +5 -1
  111. data/lib/ledger_sync/resources/expense_line_item.rb +2 -0
  112. data/lib/ledger_sync/resources/journal_entry.rb +1 -0
  113. data/lib/ledger_sync/result.rb +4 -3
  114. data/lib/ledger_sync/type/id.rb +34 -0
  115. data/lib/ledger_sync/type/reference_many.rb +8 -2
  116. data/lib/ledger_sync/type/reference_one.rb +5 -0
  117. data/lib/ledger_sync/type/value_mixin.rb +12 -0
  118. data/lib/ledger_sync/util/hash_helpers.rb +16 -0
  119. data/lib/ledger_sync/version.rb +1 -1
  120. data/qa.rb +142 -0
  121. metadata +38 -5
  122. data/lib/ledger_sync/adaptors/quickbooks_online/expense/mapping.rb +0 -15
  123. data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry/mapping.rb +0 -14
  124. data/lib/ledger_sync/error/sync_errors.rb +0 -22
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LedgerSync
4
+ module Adaptors
5
+ module QuickBooksOnline
6
+ module Transfer
7
+ class LedgerSerializer < QuickBooksOnline::LedgerSerializer
8
+ id
9
+
10
+ attribute ledger_attribute: 'Amount',
11
+ resource_attribute: :amount,
12
+ type: LedgerSerializerType::AmountType
13
+
14
+ attribute ledger_attribute: 'PrivateNote',
15
+ resource_attribute: :memo
16
+
17
+ attribute ledger_attribute: 'FromAccountRef.value',
18
+ resource_attribute: 'from_account.ledger_id'
19
+
20
+ attribute ledger_attribute: 'ToAccountRef.value',
21
+ resource_attribute: 'to_account.ledger_id'
22
+
23
+ attribute ledger_attribute: 'TxnDate',
24
+ resource_attribute: :transaction_date,
25
+ type: LedgerSerializerType::DateType
26
+
27
+ attribute ledger_attribute: 'CurrencyRef.value',
28
+ resource_attribute: 'currency'
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -6,6 +6,7 @@ module LedgerSync
6
6
  class Create < Operation::Create
7
7
  class Contract < LedgerSync::Adaptors::Contract
8
8
  params do
9
+ required(:external_id).maybe(:string)
9
10
  required(:ledger_id).value(:nil)
10
11
  required(:from_account).hash(Types::Reference)
11
12
  required(:to_account).hash(Types::Reference)
@@ -15,35 +16,6 @@ module LedgerSync
15
16
  required(:transaction_date).filled(:date?)
16
17
  end
17
18
  end
18
-
19
- private
20
-
21
- def operate
22
- response = adaptor.post(
23
- resource: 'transfer',
24
- payload: local_resource_data
25
- )
26
-
27
- resource.ledger_id = response.dig('Id')
28
- success(response: response)
29
- end
30
-
31
- def local_resource_data
32
- {
33
- 'CurrencyRef' => {
34
- 'value' => resource.currency,
35
- },
36
- 'Amount' => resource.amount,
37
- 'TxnDate' => resource.transaction_date.to_s, # Format: YYYY-MM-DD
38
- 'PrivateNote' => resource.memo,
39
- 'FromAccountRef' => {
40
- 'value' => resource.from_account.ledger_id
41
- },
42
- 'ToAccountRef' => {
43
- 'value' => resource.to_account.ledger_id
44
- }
45
- }
46
- end
47
19
  end
48
20
  end
49
21
  end
@@ -6,6 +6,7 @@ module LedgerSync
6
6
  class Find < Operation::Find
7
7
  class Contract < LedgerSync::Adaptors::Contract
8
8
  schema do
9
+ required(:external_id).maybe(:string)
9
10
  required(:ledger_id).filled(:string)
10
11
  required(:from_account).hash(Types::Reference)
11
12
  required(:to_account).hash(Types::Reference)
@@ -15,19 +16,6 @@ module LedgerSync
15
16
  required(:transaction_date).maybe(:date?)
16
17
  end
17
18
  end
18
-
19
- private
20
-
21
- def operate
22
- return failure(nil) if resource.ledger_id.nil?
23
-
24
- response = adaptor.find(
25
- resource: 'transfer',
26
- id: resource.ledger_id
27
- )
28
-
29
- success(response: response)
30
- end
31
19
  end
32
20
  end
33
21
  end
@@ -1,11 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module LedgerSync
2
4
  module Adaptors
3
5
  module QuickBooksOnline
4
6
  module Transfer
5
7
  module Operations
6
- class Update < Operation::Update
8
+ class Update < Operation::FullUpdate
7
9
  class Contract < LedgerSync::Adaptors::Contract
8
10
  schema do
11
+ required(:external_id).maybe(:string)
9
12
  required(:ledger_id).filled(:string)
10
13
  required(:from_account).hash(Types::Reference)
11
14
  required(:to_account).hash(Types::Reference)
@@ -15,40 +18,6 @@ module LedgerSync
15
18
  required(:transaction_date).filled(:date?)
16
19
  end
17
20
  end
18
-
19
- private
20
-
21
- def operate
22
- ledger_resource_data = adaptor.find(
23
- resource: 'transfer',
24
- id: resource.ledger_id
25
- )
26
- response = adaptor.post(
27
- resource: 'transfer',
28
- payload: merge_into(from: local_resource_data, to: ledger_resource_data)
29
- )
30
-
31
- resource.ledger_id = response.dig('Id')
32
- success(response: response)
33
- end
34
-
35
- def local_resource_data
36
- {
37
- 'CurrencyRef' => {
38
- 'value' => resource.currency,
39
- },
40
- 'Amount' => resource.amount,
41
- 'TxnDate' => resource.transaction_date.to_s, # Format: YYYY-MM-DD
42
- 'PrivateNote' => resource.memo,
43
- 'FromAccountRef' => {
44
- 'value' => resource.from_account.ledger_id
45
- },
46
- 'ToAccountRef' => {
47
- 'value' => resource.to_account.ledger_id
48
- }
49
- }
50
-
51
- end
52
21
  end
53
22
  end
54
23
  end
@@ -90,7 +90,8 @@ module LedgerSync
90
90
 
91
91
  return matcher.error_klass.new(
92
92
  adaptor: adaptor,
93
- message: matcher.output_message
93
+ message: matcher.output_message,
94
+ response: error
94
95
  )
95
96
  end
96
97
  nil
@@ -87,7 +87,8 @@ module LedgerSync
87
87
 
88
88
  return matcher.error_klass.new(
89
89
  operation: operation,
90
- message: matcher.output_message
90
+ message: matcher.output_message,
91
+ response: error
91
92
  )
92
93
  end
93
94
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LedgerSync
4
+ module Adaptors
5
+ module QuickBooksOnline
6
+ module Vendor
7
+ class LedgerSerializer < QuickBooksOnline::LedgerSerializer
8
+ id
9
+
10
+ attribute ledger_attribute: 'DisplayName',
11
+ resource_attribute: :display_name
12
+
13
+ attribute ledger_attribute: 'GivenName',
14
+ resource_attribute: :first_name
15
+
16
+ attribute ledger_attribute: 'FamilyName',
17
+ resource_attribute: :last_name
18
+
19
+ attribute ledger_attribute: 'PrimaryEmailAddr.Address',
20
+ resource_attribute: :email
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -8,6 +8,7 @@ module LedgerSync
8
8
  class Create < Operation::Create
9
9
  class Contract < LedgerSync::Adaptors::Contract
10
10
  params do
11
+ required(:external_id).maybe(:string)
11
12
  required(:ledger_id).value(:nil)
12
13
  optional(:display_name).maybe(:string)
13
14
  optional(:first_name).maybe(:string)
@@ -15,29 +16,6 @@ module LedgerSync
15
16
  optional(:email).maybe(:string)
16
17
  end
17
18
  end
18
-
19
- private
20
-
21
- def operate
22
- response = adaptor.post(
23
- resource: 'vendor',
24
- payload: local_resource_data
25
- )
26
-
27
- resource.ledger_id = response.dig('Id')
28
- success(response: response)
29
- end
30
-
31
- def local_resource_data
32
- {
33
- 'DisplayName' => resource.display_name,
34
- 'GivenName' => resource.first_name,
35
- 'FamilyName' => resource.last_name,
36
- 'PrimaryEmailAddr' => {
37
- 'Address' => resource.email
38
- }
39
- }
40
- end
41
19
  end
42
20
  end
43
21
  end
@@ -8,6 +8,7 @@ module LedgerSync
8
8
  class Find < Operation::Find
9
9
  class Contract < LedgerSync::Adaptors::Contract
10
10
  params do
11
+ required(:external_id).maybe(:string)
11
12
  required(:ledger_id).filled(:string)
12
13
  required(:display_name).maybe(:string)
13
14
  required(:first_name).maybe(:string)
@@ -15,19 +16,6 @@ module LedgerSync
15
16
  optional(:email).maybe(:string)
16
17
  end
17
18
  end
18
-
19
- private
20
-
21
- def operate
22
- return failure(nil) if resource.ledger_id.nil?
23
-
24
- response = adaptor.find(
25
- resource: 'vendor',
26
- id: resource.ledger_id
27
- )
28
-
29
- success(response: response)
30
- end
31
19
  end
32
20
  end
33
21
  end
@@ -5,9 +5,10 @@ module LedgerSync
5
5
  module QuickBooksOnline
6
6
  module Vendor
7
7
  module Operations
8
- class Update < Operation::Update
8
+ class Update < Operation::FullUpdate
9
9
  class Contract < LedgerSync::Adaptors::Contract
10
10
  params do
11
+ required(:external_id).maybe(:string)
11
12
  required(:ledger_id).filled(:string)
12
13
  optional(:display_name).maybe(:string)
13
14
  optional(:first_name).maybe(:string)
@@ -15,34 +16,6 @@ module LedgerSync
15
16
  optional(:email).maybe(:string)
16
17
  end
17
18
  end
18
-
19
- private
20
-
21
- def operate
22
- ledger_resource_data = adaptor.find(
23
- resource: 'vendor',
24
- id: resource.ledger_id
25
- )
26
-
27
- response = adaptor.post(
28
- resource: 'vendor',
29
- payload: merge_into(from: local_resource_data, to: ledger_resource_data)
30
- )
31
-
32
- resource.ledger_id = response.dig('Id')
33
- success(response: response)
34
- end
35
-
36
- def local_resource_data
37
- {
38
- 'DisplayName' => resource.display_name,
39
- 'GivenName' => resource.first_name,
40
- 'FamilyName' => resource.last_name,
41
- 'PrimaryEmailAddr' => {
42
- 'Address' => resource.email
43
- }
44
- }
45
- end
46
19
  end
47
20
  end
48
21
  end
@@ -6,6 +6,7 @@ module LedgerSync
6
6
  class Create < Operation::Create
7
7
  class Contract < LedgerSync::Adaptors::Contract
8
8
  schema do
9
+ required(:external_id).maybe(:string)
9
10
  required(:ledger_id).value(:nil)
10
11
  required(:name).filled(:string)
11
12
  required(:classification).filled(:string)
@@ -43,7 +44,10 @@ module LedgerSync
43
44
 
44
45
  resource.ledger_id = response.dig('id')
45
46
 
46
- success(response: response)
47
+ success(
48
+ resource: Test::LedgerSerializer.new(resource: resource).deserialize(hash: response),
49
+ response: response
50
+ )
47
51
  end
48
52
  end
49
53
  end
@@ -6,6 +6,7 @@ module LedgerSync
6
6
  class Find < Operation::Find
7
7
  class Contract < LedgerSync::Adaptors::Contract
8
8
  params do
9
+ required(:external_id).maybe(:string)
9
10
  required(:ledger_id).filled(:string)
10
11
  required(:name).maybe(:string)
11
12
  required(:classification).maybe(:string)
@@ -28,7 +29,10 @@ module LedgerSync
28
29
  id: resource.ledger_id
29
30
  )
30
31
 
31
- success(response: response)
32
+ success(
33
+ resource: Test::LedgerSerializer.new(resource: resource).deserialize(hash: response),
34
+ response: response
35
+ )
32
36
  end
33
37
  end
34
38
  end
@@ -6,6 +6,7 @@ module LedgerSync
6
6
  class Invalid < Operation::Create
7
7
  class Contract < LedgerSync::Adaptors::Contract
8
8
  schema do
9
+ required(:external_id).maybe(:string)
9
10
  required(:ledger_id).filled(:string)
10
11
  required(:name).maybe(:string)
11
12
  required(:classification).maybe(:string)
@@ -6,6 +6,7 @@ module LedgerSync
6
6
  class Update < Operation::Update
7
7
  class Contract < LedgerSync::Adaptors::Contract
8
8
  schema do
9
+ required(:external_id).maybe(:string)
9
10
  required(:ledger_id).filled(:string)
10
11
  required(:name).filled(:string)
11
12
  required(:classification).filled(:string)
@@ -26,12 +27,17 @@ module LedgerSync
26
27
  id: resource.ledger_id
27
28
  )
28
29
 
30
+ find_serializer = Test::LedgerSerializer.new(resource: resource).deserialize(hash: ledger_resource_data)
31
+
29
32
  response = adaptor.post(
30
33
  resource: 'account',
31
- payload: merge_into(from: local_resource_data, to: ledger_resource_data)
34
+ payload: find_serializer.to_h
32
35
  )
33
36
 
34
- success(response: response)
37
+ success(
38
+ resource: Test::LedgerSerializer.new(resource: resource).deserialize(hash: response),
39
+ response: response
40
+ )
35
41
  end
36
42
 
37
43
  def local_resource_data
@@ -6,6 +6,7 @@ module LedgerSync
6
6
  class Valid < Operation::Create
7
7
  class Contract < LedgerSync::Adaptors::Contract
8
8
  schema do
9
+ optional(:external_id).maybe(:string)
9
10
  optional(:ledger_id).maybe(:string)
10
11
  required(:name).filled(:string)
11
12
  required(:classification).filled(:string)
@@ -6,6 +6,7 @@ module LedgerSync
6
6
  class Create < Operation::Create
7
7
  class Contract < LedgerSync::Adaptors::Contract
8
8
  schema do
9
+ required(:external_id).maybe(:string)
9
10
  required(:ledger_id).value(:nil)
10
11
  required(:email).maybe(:string)
11
12
  required(:name).filled(:string)
@@ -37,7 +38,10 @@ module LedgerSync
37
38
 
38
39
  resource.ledger_id = response.dig('id')
39
40
 
40
- success(response: response)
41
+ success(
42
+ response: response,
43
+ resource: resource
44
+ )
41
45
  end
42
46
  end
43
47
  end
@@ -6,6 +6,7 @@ module LedgerSync
6
6
  class Find < Operation::Find
7
7
  class Contract < LedgerSync::Adaptors::Contract
8
8
  params do
9
+ required(:external_id).maybe(:string)
9
10
  required(:ledger_id).filled(:string)
10
11
  optional(:email).maybe(:string)
11
12
  optional(:name).maybe(:string)
@@ -23,7 +24,10 @@ module LedgerSync
23
24
  id: resource.ledger_id
24
25
  )
25
26
 
26
- success(response: response)
27
+ success(
28
+ resource: Test::LedgerSerializer.new(resource: resource).deserialize(hash: response),
29
+ response: response
30
+ )
27
31
  end
28
32
  end
29
33
  end