agris 0.19.0 → 1.1.0
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.
- checksums.yaml +4 -4
- data/.claude/agents/app-explorer.md +212 -0
- data/.claude/agents/cross-review.md +152 -0
- data/.claude/agents/developer.md +215 -0
- data/.claude/agents/pm.md +401 -0
- data/.claude/agents/qa.md +235 -0
- data/.claude/agents/reviewer.md +185 -0
- data/.claude/agents/spec-preflight.md +167 -0
- data/.claude/agents/spec.md +244 -0
- data/.claude/ai/agent-rules.md +36 -0
- data/.claude/ai/spec-writing-guide.md +43 -0
- data/.claude/commands/app-explorer.md +87 -0
- data/.claude/commands/cross-review.md +91 -0
- data/.claude/commands/developer.md +118 -0
- data/.claude/commands/pm.md +166 -0
- data/.claude/commands/qa.md +111 -0
- data/.claude/commands/reviewer.md +86 -0
- data/.claude/commands/spec.md +172 -0
- data/.github/workflows/ci.yml +62 -0
- data/.gitignore +5 -0
- data/.rubocop.yml +10 -103
- data/.ruby-version +1 -0
- data/CHANGELOG.md +91 -0
- data/CLAUDE.md +98 -0
- data/README.md +9 -1
- data/agris.gemspec +4 -2
- data/docs/RELEASING.md +147 -0
- data/docs/specs/README.md +24 -0
- data/docs/specs/accounts-payables/.gitkeep +0 -0
- data/docs/specs/accounts-receivables/.gitkeep +0 -0
- data/docs/specs/grain/.gitkeep +0 -0
- data/docs/specs/inventory/.gitkeep +0 -0
- data/docs/specs/messages/.gitkeep +0 -0
- data/docs/specs/ot3-257-freight-ticket-reference.md +48 -0
- data/docs/specs/rename-folder.example.md +82 -0
- data/docs/specs/spec-template.md +68 -0
- data/docs/specs/support/.gitkeep +0 -0
- data/lib/agris/api/accounts_payables/disbursements.rb +19 -0
- data/lib/agris/api/accounts_payables/new_disbursement.rb +42 -0
- data/lib/agris/api/accounts_payables.rb +3 -0
- data/lib/agris/api/accounts_receivables/invoices.rb +1 -1
- data/lib/agris/api/accounts_receivables/new_payment.rb +96 -0
- data/lib/agris/api/accounts_receivables/new_payment_remark.rb +38 -0
- data/lib/agris/api/accounts_receivables/payment_post_result.rb +35 -0
- data/lib/agris/api/accounts_receivables/payments.rb +33 -0
- data/lib/agris/api/accounts_receivables.rb +6 -0
- data/lib/agris/api/document_query_response.rb +6 -2
- data/lib/agris/api/grain/contract.rb +3 -3
- data/lib/agris/api/grain/new_ticket.rb +1 -0
- data/lib/agris/api/grain/purchase_contracts.rb +1 -1
- data/lib/agris/api/grain/sales_contracts.rb +1 -1
- data/lib/agris/api/grain.rb +4 -2
- data/lib/agris/api/inventory/delivery_tickets.rb +1 -1
- data/lib/agris/api/inventory/orders.rb +1 -1
- data/lib/agris/api/messages/changed_query_base.rb +1 -0
- data/lib/agris/api/messages/document_query_base.rb +1 -0
- data/lib/agris/api/messages/import.rb +1 -0
- data/lib/agris/api/new_voucher.rb +21 -3
- data/lib/agris/api/post_result.rb +9 -1
- data/lib/agris/client.rb +3 -1
- data/lib/agris/version.rb +1 -1
- data/lib/agris.rb +1 -0
- data/lib/hash.rb +1 -0
- metadata +62 -12
- data/.circleci/config.yml +0 -45
- data/.codeclimate.yml +0 -5
|
@@ -9,7 +9,8 @@ module Agris
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def last_request_date_time
|
|
12
|
-
|
|
12
|
+
system_hash = @output_hash[pluralized_resource_name]['system']
|
|
13
|
+
Time.parse(system_hash['lastrequestdatetime'])
|
|
13
14
|
end
|
|
14
15
|
|
|
15
16
|
def documents
|
|
@@ -37,7 +38,10 @@ module Agris
|
|
|
37
38
|
end
|
|
38
39
|
|
|
39
40
|
def resource_type
|
|
40
|
-
@resource_type ||=
|
|
41
|
+
@resource_type ||= begin
|
|
42
|
+
name = self.class.name.split('::').last.chomp('ExtractResponse')
|
|
43
|
+
Object.const_get(name)
|
|
44
|
+
end
|
|
41
45
|
end
|
|
42
46
|
|
|
43
47
|
def resources
|
|
@@ -104,11 +104,11 @@ module Agris
|
|
|
104
104
|
def self.add_transcodes_to_schedule(schedule)
|
|
105
105
|
if schedule['trancodes']
|
|
106
106
|
trancodes = schedule['trancodes']['trancode']
|
|
107
|
-
trancodes = [trancodes] unless trancodes.
|
|
107
|
+
trancodes = [trancodes] unless trancodes.instance_of?(Array)
|
|
108
108
|
trancodes.each do |trancode|
|
|
109
|
-
label_code = trancode['label'].downcase
|
|
109
|
+
label_code = "#{trancode['label'].downcase}code"
|
|
110
110
|
schedule[label_code] = trancode['code']
|
|
111
|
-
label_description = trancode['label'].downcase
|
|
111
|
+
label_description = "#{trancode['label'].downcase}description"
|
|
112
112
|
schedule[label_description] = trancode['description']
|
|
113
113
|
end
|
|
114
114
|
end
|
|
@@ -17,7 +17,7 @@ module Agris
|
|
|
17
17
|
)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
def purchase_contracts_changed_since(datetime, detail
|
|
20
|
+
def purchase_contracts_changed_since(datetime, detail: false)
|
|
21
21
|
extract_documents(
|
|
22
22
|
Messages::QueryChangedPurchaseContracts.new(datetime, detail),
|
|
23
23
|
Agris::Api::Grain::Contract
|
|
@@ -17,7 +17,7 @@ module Agris
|
|
|
17
17
|
)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
def sales_contracts_changed_since(datetime, detail
|
|
20
|
+
def sales_contracts_changed_since(datetime, detail: false)
|
|
21
21
|
extract_documents(
|
|
22
22
|
Messages::QueryChangedSalesContracts.new(datetime, detail),
|
|
23
23
|
Agris::Api::Grain::Contract
|
data/lib/agris/api/grain.rb
CHANGED
|
@@ -16,8 +16,10 @@ module Agris
|
|
|
16
16
|
autoload :NewTicketRemark, 'agris/api/grain/new_ticket_remark'
|
|
17
17
|
autoload :Rates, 'agris/api/grain/rates'
|
|
18
18
|
autoload :SalesContracts, 'agris/api/grain/sales_contracts'
|
|
19
|
-
autoload :SpecificCommodityCodeExtract,
|
|
20
|
-
|
|
19
|
+
autoload :SpecificCommodityCodeExtract,
|
|
20
|
+
'agris/api/grain/specific_commodity_code_extract'
|
|
21
|
+
autoload :SpecificContractExtract,
|
|
22
|
+
'agris/api/grain/specific_contract_extract'
|
|
21
23
|
autoload :Tickets, 'agris/api/grain/tickets'
|
|
22
24
|
end
|
|
23
25
|
end
|
|
@@ -5,8 +5,6 @@ module Agris
|
|
|
5
5
|
class NewVoucher
|
|
6
6
|
include XmlModel
|
|
7
7
|
|
|
8
|
-
attr_reader :details
|
|
9
|
-
|
|
10
8
|
ATTRIBUTE_NAMES = %w(
|
|
11
9
|
agent_id
|
|
12
10
|
currency_code
|
|
@@ -44,7 +42,7 @@ module Agris
|
|
|
44
42
|
voucher_type
|
|
45
43
|
).freeze
|
|
46
44
|
|
|
47
|
-
attr_reader
|
|
45
|
+
attr_reader :details, *ATTRIBUTE_NAMES
|
|
48
46
|
|
|
49
47
|
def initialize(hash = {})
|
|
50
48
|
super
|
|
@@ -108,6 +106,26 @@ module Agris
|
|
|
108
106
|
@record_type = 'ACPV1'
|
|
109
107
|
end
|
|
110
108
|
end
|
|
109
|
+
|
|
110
|
+
class FreightTicketReferenceDetail
|
|
111
|
+
include XmlModel
|
|
112
|
+
|
|
113
|
+
ATTRIBUTE_NAMES = %w(
|
|
114
|
+
in_out_code
|
|
115
|
+
ticket_location
|
|
116
|
+
ticket_number
|
|
117
|
+
freight_amount
|
|
118
|
+
record_type
|
|
119
|
+
).freeze
|
|
120
|
+
|
|
121
|
+
attr_reader(*ATTRIBUTE_NAMES)
|
|
122
|
+
|
|
123
|
+
def initialize(hash = {})
|
|
124
|
+
super
|
|
125
|
+
|
|
126
|
+
@record_type = 'ACPV3'
|
|
127
|
+
end
|
|
128
|
+
end
|
|
111
129
|
end
|
|
112
130
|
end
|
|
113
131
|
end
|
|
@@ -6,10 +6,18 @@ module Agris
|
|
|
6
6
|
results['result']['document']
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
+
# A processed post reports an empty `<reject />`, so there may be no
|
|
10
|
+
# rejections to read.
|
|
9
11
|
def reject_reasons
|
|
10
|
-
results
|
|
12
|
+
rejects = results.fetch('result', {})['rejects']
|
|
13
|
+
|
|
14
|
+
return [] if rejects.nil?
|
|
15
|
+
|
|
16
|
+
[rejects['reject']]
|
|
17
|
+
.flatten
|
|
11
18
|
.compact
|
|
12
19
|
.map { |rejection| rejection['reason'] }
|
|
20
|
+
.compact
|
|
13
21
|
end
|
|
14
22
|
|
|
15
23
|
def results
|
data/lib/agris/client.rb
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
module Agris
|
|
3
3
|
class Client
|
|
4
|
+
include Api::AccountsPayables::Disbursements
|
|
4
5
|
include Api::AccountsPayables::Vouchers
|
|
5
6
|
include Api::AccountsReceivables::Invoices
|
|
7
|
+
include Api::AccountsReceivables::Payments
|
|
6
8
|
include Api::Grain::CommodityCodes
|
|
7
9
|
include Api::Grain::GrainModule
|
|
8
10
|
include Api::Grain::PurchaseContracts
|
|
@@ -41,7 +43,7 @@ module Agris
|
|
|
41
43
|
|
|
42
44
|
def logger
|
|
43
45
|
# We may want to replace the Logger with some kind of NullLogger?
|
|
44
|
-
@logger ||= Logger.new(
|
|
46
|
+
@logger ||= Logger.new($stdout)
|
|
45
47
|
end
|
|
46
48
|
end
|
|
47
49
|
end
|
data/lib/agris/version.rb
CHANGED
data/lib/agris.rb
CHANGED
data/lib/hash.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: agris
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- John Gray
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: exe
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2026-09-22 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: savon
|
|
@@ -27,18 +27,32 @@ dependencies:
|
|
|
27
27
|
version: '2.11'
|
|
28
28
|
- !ruby/object:Gem::Dependency
|
|
29
29
|
name: bundler
|
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
|
31
|
+
requirements:
|
|
32
|
+
- - ">="
|
|
33
|
+
- !ruby/object:Gem::Version
|
|
34
|
+
version: '2.3'
|
|
35
|
+
type: :development
|
|
36
|
+
prerelease: false
|
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
38
|
+
requirements:
|
|
39
|
+
- - ">="
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: '2.3'
|
|
42
|
+
- !ruby/object:Gem::Dependency
|
|
43
|
+
name: factory_bot
|
|
30
44
|
requirement: !ruby/object:Gem::Requirement
|
|
31
45
|
requirements:
|
|
32
46
|
- - "~>"
|
|
33
47
|
- !ruby/object:Gem::Version
|
|
34
|
-
version:
|
|
48
|
+
version: '6.4'
|
|
35
49
|
type: :development
|
|
36
50
|
prerelease: false
|
|
37
51
|
version_requirements: !ruby/object:Gem::Requirement
|
|
38
52
|
requirements:
|
|
39
53
|
- - "~>"
|
|
40
54
|
- !ruby/object:Gem::Version
|
|
41
|
-
version:
|
|
55
|
+
version: '6.4'
|
|
42
56
|
- !ruby/object:Gem::Dependency
|
|
43
57
|
name: pry-byebug
|
|
44
58
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -99,16 +113,16 @@ dependencies:
|
|
|
99
113
|
name: rubocop
|
|
100
114
|
requirement: !ruby/object:Gem::Requirement
|
|
101
115
|
requirements:
|
|
102
|
-
- -
|
|
116
|
+
- - "~>"
|
|
103
117
|
- !ruby/object:Gem::Version
|
|
104
|
-
version:
|
|
118
|
+
version: '1.80'
|
|
105
119
|
type: :development
|
|
106
120
|
prerelease: false
|
|
107
121
|
version_requirements: !ruby/object:Gem::Requirement
|
|
108
122
|
requirements:
|
|
109
|
-
- -
|
|
123
|
+
- - "~>"
|
|
110
124
|
- !ruby/object:Gem::Version
|
|
111
|
-
version:
|
|
125
|
+
version: '1.80'
|
|
112
126
|
- !ruby/object:Gem::Dependency
|
|
113
127
|
name: simplecov
|
|
114
128
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -145,12 +159,31 @@ executables: []
|
|
|
145
159
|
extensions: []
|
|
146
160
|
extra_rdoc_files: []
|
|
147
161
|
files:
|
|
148
|
-
- ".
|
|
149
|
-
- ".
|
|
162
|
+
- ".claude/agents/app-explorer.md"
|
|
163
|
+
- ".claude/agents/cross-review.md"
|
|
164
|
+
- ".claude/agents/developer.md"
|
|
165
|
+
- ".claude/agents/pm.md"
|
|
166
|
+
- ".claude/agents/qa.md"
|
|
167
|
+
- ".claude/agents/reviewer.md"
|
|
168
|
+
- ".claude/agents/spec-preflight.md"
|
|
169
|
+
- ".claude/agents/spec.md"
|
|
170
|
+
- ".claude/ai/agent-rules.md"
|
|
171
|
+
- ".claude/ai/spec-writing-guide.md"
|
|
172
|
+
- ".claude/commands/app-explorer.md"
|
|
173
|
+
- ".claude/commands/cross-review.md"
|
|
174
|
+
- ".claude/commands/developer.md"
|
|
175
|
+
- ".claude/commands/pm.md"
|
|
176
|
+
- ".claude/commands/qa.md"
|
|
177
|
+
- ".claude/commands/reviewer.md"
|
|
178
|
+
- ".claude/commands/spec.md"
|
|
179
|
+
- ".github/workflows/ci.yml"
|
|
150
180
|
- ".gitignore"
|
|
151
181
|
- ".rspec"
|
|
152
182
|
- ".rubocop.yml"
|
|
153
183
|
- ".rubocop_todo.yml"
|
|
184
|
+
- ".ruby-version"
|
|
185
|
+
- CHANGELOG.md
|
|
186
|
+
- CLAUDE.md
|
|
154
187
|
- Gemfile
|
|
155
188
|
- LICENSE
|
|
156
189
|
- README.md
|
|
@@ -158,12 +191,29 @@ files:
|
|
|
158
191
|
- agris.gemspec
|
|
159
192
|
- bin/console
|
|
160
193
|
- bin/setup
|
|
194
|
+
- docs/RELEASING.md
|
|
195
|
+
- docs/specs/README.md
|
|
196
|
+
- docs/specs/accounts-payables/.gitkeep
|
|
197
|
+
- docs/specs/accounts-receivables/.gitkeep
|
|
198
|
+
- docs/specs/grain/.gitkeep
|
|
199
|
+
- docs/specs/inventory/.gitkeep
|
|
200
|
+
- docs/specs/messages/.gitkeep
|
|
201
|
+
- docs/specs/ot3-257-freight-ticket-reference.md
|
|
202
|
+
- docs/specs/rename-folder.example.md
|
|
203
|
+
- docs/specs/spec-template.md
|
|
204
|
+
- docs/specs/support/.gitkeep
|
|
161
205
|
- lib/agris.rb
|
|
162
206
|
- lib/agris/api.rb
|
|
163
207
|
- lib/agris/api/accounts_payables.rb
|
|
208
|
+
- lib/agris/api/accounts_payables/disbursements.rb
|
|
209
|
+
- lib/agris/api/accounts_payables/new_disbursement.rb
|
|
164
210
|
- lib/agris/api/accounts_receivables.rb
|
|
165
211
|
- lib/agris/api/accounts_receivables/invoice.rb
|
|
166
212
|
- lib/agris/api/accounts_receivables/invoices.rb
|
|
213
|
+
- lib/agris/api/accounts_receivables/new_payment.rb
|
|
214
|
+
- lib/agris/api/accounts_receivables/new_payment_remark.rb
|
|
215
|
+
- lib/agris/api/accounts_receivables/payment_post_result.rb
|
|
216
|
+
- lib/agris/api/accounts_receivables/payments.rb
|
|
167
217
|
- lib/agris/api/accounts_receivables/specific_invoice_extract.rb
|
|
168
218
|
- lib/agris/api/document_query_response.rb
|
|
169
219
|
- lib/agris/api/grain.rb
|
|
@@ -243,14 +293,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
243
293
|
requirements:
|
|
244
294
|
- - ">="
|
|
245
295
|
- !ruby/object:Gem::Version
|
|
246
|
-
version: '
|
|
296
|
+
version: '3.1'
|
|
247
297
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
248
298
|
requirements:
|
|
249
299
|
- - ">="
|
|
250
300
|
- !ruby/object:Gem::Version
|
|
251
301
|
version: '0'
|
|
252
302
|
requirements: []
|
|
253
|
-
rubygems_version: 3.3.
|
|
303
|
+
rubygems_version: 3.3.27
|
|
254
304
|
signing_key:
|
|
255
305
|
specification_version: 4
|
|
256
306
|
summary: Ruby client library for Agris API
|
data/.circleci/config.yml
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
version: 2
|
|
2
|
-
|
|
3
|
-
jobs:
|
|
4
|
-
build:
|
|
5
|
-
docker:
|
|
6
|
-
# specify the version you desire here
|
|
7
|
-
- image: circleci/ruby:2.4.1
|
|
8
|
-
|
|
9
|
-
working_directory: ~/agris
|
|
10
|
-
|
|
11
|
-
steps:
|
|
12
|
-
- checkout
|
|
13
|
-
- run:
|
|
14
|
-
name: install dependencies
|
|
15
|
-
command: |
|
|
16
|
-
bundle install --jobs=4 --retry=3 --path vendor/bundle
|
|
17
|
-
|
|
18
|
-
- run:
|
|
19
|
-
name: Setup Code Climate test-reporter
|
|
20
|
-
command: |
|
|
21
|
-
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
|
22
|
-
chmod +x ./cc-test-reporter
|
|
23
|
-
|
|
24
|
-
# run tests!
|
|
25
|
-
- run:
|
|
26
|
-
name: run tests
|
|
27
|
-
command: |
|
|
28
|
-
./cc-test-reporter before-build
|
|
29
|
-
mkdir /tmp/test-results
|
|
30
|
-
TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"
|
|
31
|
-
|
|
32
|
-
bundle exec rspec --format progress \
|
|
33
|
-
--format RspecJunitFormatter \
|
|
34
|
-
--out /tmp/test-results/rspec.xml \
|
|
35
|
-
--format progress \
|
|
36
|
-
-- \
|
|
37
|
-
$TEST_FILES
|
|
38
|
-
./cc-test-reporter after-build --coverage-input-type simplecov --exit-code $?
|
|
39
|
-
|
|
40
|
-
# collect reports
|
|
41
|
-
- store_test_results:
|
|
42
|
-
path: /tmp/test-results
|
|
43
|
-
- store_artifacts:
|
|
44
|
-
path: /tmp/test-results
|
|
45
|
-
destination: test-results
|