hippo 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +7 -0
- data/README.md +58 -7
- data/lib/hippo/exceptions.rb +2 -1
- data/lib/hippo/field.rb +87 -1
- data/lib/hippo/parser/segment.rb +2 -2
- data/lib/hippo/segments/AK1.rb +1 -2
- data/lib/hippo/segments/AK3.rb +1 -2
- data/lib/hippo/segments/AK4.rb +4 -8
- data/lib/hippo/segments/AK9.rb +3 -6
- data/lib/hippo/segments/AMT.rb +1 -1
- data/lib/hippo/segments/BPR.rb +1 -1
- data/lib/hippo/segments/CAS.rb +12 -12
- data/lib/hippo/segments/CLM.rb +1 -1
- data/lib/hippo/segments/CLP.rb +5 -5
- data/lib/hippo/segments/CN1.rb +3 -3
- data/lib/hippo/segments/CR1.rb +2 -2
- data/lib/hippo/segments/CR2.rb +4 -5
- data/lib/hippo/segments/CR3.rb +1 -1
- data/lib/hippo/segments/CR4.rb +16 -16
- data/lib/hippo/segments/CR5.rb +7 -7
- data/lib/hippo/segments/CR7.rb +2 -4
- data/lib/hippo/segments/CTP.rb +15 -16
- data/lib/hippo/segments/CTX.rb +6 -12
- data/lib/hippo/segments/CUR.rb +1 -1
- data/lib/hippo/segments/DMG.rb +1 -1
- data/lib/hippo/segments/DN1.rb +2 -2
- data/lib/hippo/segments/DN2.rb +1 -1
- data/lib/hippo/segments/DSB.rb +2 -2
- data/lib/hippo/segments/FRM.rb +1 -1
- data/lib/hippo/segments/GE.rb +2 -2
- data/lib/hippo/segments/GS.rb +6 -6
- data/lib/hippo/segments/HCP.rb +5 -5
- data/lib/hippo/segments/HI.rb +24 -24
- data/lib/hippo/segments/HSD.rb +3 -4
- data/lib/hippo/segments/IEA.rb +2 -2
- data/lib/hippo/segments/IK3.rb +1 -2
- data/lib/hippo/segments/IK4.rb +4 -8
- data/lib/hippo/segments/ISA.rb +10 -10
- data/lib/hippo/segments/K3.rb +10 -10
- data/lib/hippo/segments/LX.rb +1 -2
- data/lib/hippo/segments/MEA.rb +13 -13
- data/lib/hippo/segments/MIA.rb +19 -19
- data/lib/hippo/segments/MOA.rb +4 -4
- data/lib/hippo/segments/PAT.rb +1 -1
- data/lib/hippo/segments/PLB.rb +6 -6
- data/lib/hippo/segments/PS1.rb +1 -1
- data/lib/hippo/segments/PWK.rb +1 -2
- data/lib/hippo/segments/QTY.rb +11 -11
- data/lib/hippo/segments/SE.rb +1 -2
- data/lib/hippo/segments/STC.rb +2 -2
- data/lib/hippo/segments/SV1.rb +8 -12
- data/lib/hippo/segments/SV2.rb +4 -4
- data/lib/hippo/segments/SV3.rb +6 -10
- data/lib/hippo/segments/SV5.rb +3 -3
- data/lib/hippo/segments/SV6.rb +6 -10
- data/lib/hippo/segments/SVC.rb +4 -4
- data/lib/hippo/segments/SVD.rb +3 -4
- data/lib/hippo/segments/TA1.rb +5 -5
- data/lib/hippo/segments/TS2.rb +19 -19
- data/lib/hippo/segments/TS3.rb +21 -21
- data/lib/hippo/segments/UR.rb +1 -1
- data/lib/hippo/segments/base.rb +12 -14
- data/lib/hippo/version.rb +1 -1
- data/lib/hippo.rb +4 -0
- data/test/test_helper.rb +4 -0
- data/test/test_parser.rb +3 -3
- data/test/test_segments_base.rb +42 -0
- metadata +6 -6
data/CHANGELOG
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
0.2.0 - 2012/01/21
|
2
|
+
* Updated segment definitions to differentiate between
|
3
|
+
Integer and Decimal.
|
4
|
+
* Add field level datatype conversion. Date, Time, Integer,
|
5
|
+
and Decimal fields will be stored internally as their
|
6
|
+
appropriate type and converted to a properly formatted
|
7
|
+
string representation when needed.
|
1
8
|
0.1.2 - 2012/01/18
|
2
9
|
* Add RepeatingComponent to Outputters.
|
3
10
|
* Add HIPAA_997 to list of supported transaction sets.
|
data/README.md
CHANGED
@@ -96,6 +96,10 @@ Transaction Sets/Loops and Segments are defined with a very straight forward DSL
|
|
96
96
|
field :name => 'Field4'
|
97
97
|
field :name => 'CommonName'
|
98
98
|
field :name => 'CommonName'
|
99
|
+
field :name => 'DateField', :datatype => :date
|
100
|
+
field :name => 'TimeField', :datatype => :time
|
101
|
+
field :name => 'IntegerField', :datatype => :integer
|
102
|
+
field :name => 'DecimalField', :datatype => :decimal
|
99
103
|
end
|
100
104
|
|
101
105
|
class TestCompoundSegment < Hippo::Segments::Base
|
@@ -223,8 +227,8 @@ composite field you can optionally pass the index of the field to access.
|
|
223
227
|
ts.TCS do |tcs|
|
224
228
|
tcs.Field1 = 'Foo' # use the field name
|
225
229
|
tcs.TCS01_01 = 'Bar' # use shorthand notation:
|
226
|
-
# TCS01 refers to the
|
227
|
-
# _01 refers to the first field within the composite
|
230
|
+
# TCS01 refers to the first field within the current segment
|
231
|
+
# _01 refers to the first field within the composite field
|
228
232
|
end
|
229
233
|
```
|
230
234
|
|
@@ -235,9 +239,9 @@ but if you need to access the second instance of TSS in the transaction set you
|
|
235
239
|
TSS_02 instead.
|
236
240
|
|
237
241
|
```ruby
|
238
|
-
ts.TCS.Field1
|
239
|
-
ts.TSS.Field2
|
240
|
-
ts.TSS_02.Field2
|
242
|
+
ts.TCS.Field1 = 'Foo'
|
243
|
+
ts.TSS.Field2 = 'Bar'
|
244
|
+
ts.TSS_02.Field2 = 'Baz'
|
241
245
|
|
242
246
|
# ts.to_s => 'TSS*Blah*Bar~TCS*Foo**Preset Field 7~TSS*Last Segment*Baz~'
|
243
247
|
```
|
@@ -248,12 +252,12 @@ on the name provided in the TransactionSet definition. You can either pass the
|
|
248
252
|
a Regexp to search with.
|
249
253
|
|
250
254
|
```ruby
|
251
|
-
ts.
|
255
|
+
ts.find_by_name('Test Simple Segment #1') do |tss|
|
252
256
|
tss.Field2 = 'Baz'
|
253
257
|
end
|
254
258
|
|
255
259
|
# which is essentially equivilent (because the search occurs in order of declaration)
|
256
|
-
ts.
|
260
|
+
ts.find_by_name(/Segment/) do |tss|
|
257
261
|
tss.Field2 = 'Baz'
|
258
262
|
end
|
259
263
|
|
@@ -269,6 +273,53 @@ The same technique can be used to reference fields within a segment that have th
|
|
269
273
|
# ts.to_s => 'TSS*Blah*Bar***Value1*Value2~TCS*Foo**Preset Field 7~TSS*Last Segment*Baz~'
|
270
274
|
```
|
271
275
|
|
276
|
+
Type Conversion
|
277
|
+
---------------
|
278
|
+
|
279
|
+
As of Hippo version 0.2.0 values are stored in the native format, and coverted back to the
|
280
|
+
appropriate string representation when required. This means that you can set and access date,
|
281
|
+
time, integer, and decimal fields without having to convert back and forth between strings.
|
282
|
+
|
283
|
+
As part of the type conversion process we are also validating that a fields value is being set
|
284
|
+
with a valid value for that particular data type.
|
285
|
+
|
286
|
+
Just a few examples using the type conversion:
|
287
|
+
|
288
|
+
```ruby
|
289
|
+
seg = Hippo::Segments::TSS.new # Please review definition from above.
|
290
|
+
|
291
|
+
# Date fields:
|
292
|
+
seg.DateField = Date.new(2012, 01, 20)
|
293
|
+
seg.DateField = "20120120"
|
294
|
+
seg.DateField = Time.new(2012, 01, 20, 10, 15, 20)
|
295
|
+
|
296
|
+
# all of these formats result in the same internal representation
|
297
|
+
puts seg.DateField.inspect # => #<Date: 2012-01-20 ((2455947j,0s,0n),+0s,2299161j)>
|
298
|
+
|
299
|
+
# To set the field back to a blank/empty value simply assign it to nil
|
300
|
+
seg.DateField = nil
|
301
|
+
|
302
|
+
# Time fields:
|
303
|
+
seg.TimeField = "0120" # => 1:20 am (HHMM)
|
304
|
+
seg.TimeField = "012023" # => 1:20:23 am (HHMMSS)
|
305
|
+
seg.TimeField = "01202322" # => 1:20:23.22 am (HHMMSSDD)
|
306
|
+
seg.TimeField = Time.now
|
307
|
+
|
308
|
+
# Integer fields:
|
309
|
+
seg.IntegerField = "10" # => 10
|
310
|
+
seg.IntegerField = 10 # => 10
|
311
|
+
seg.IntegerField = "10blah" # => 10
|
312
|
+
|
313
|
+
# Decimal fields:
|
314
|
+
seg.DecimalField = "123.45" # => #<BigDecimal:7fe83c315750,'0.12345E3',18(18)>
|
315
|
+
seg.DecimalField = 123.45 # => #<BigDecimal:7fe83c315750,'0.12345E3',18(18)>
|
316
|
+
seg.DecimalField = 123 # => #<BigDecimal:7fe83b9dd4f8,'0.123E3',9(18)>
|
317
|
+
seg.DecimalField = 123.0 # => #<BigDecimal:7fe83b9dd4f8,'0.123E3',9(18)>
|
318
|
+
```
|
319
|
+
|
320
|
+
__Please Note__: Due to issues with floating point representation of currency values we have
|
321
|
+
chosen to use BigDecimal internally to store all fields with a decimal datatype.
|
322
|
+
|
272
323
|
For more example please review the test suite.
|
273
324
|
|
274
325
|
License
|
data/lib/hippo/exceptions.rb
CHANGED
@@ -2,8 +2,9 @@ module Hippo
|
|
2
2
|
module Exceptions
|
3
3
|
class Exception < StandardError; end
|
4
4
|
|
5
|
+
class InvalidValue < Exception; end
|
5
6
|
class InvalidField < Exception; end
|
6
7
|
class InvalidSegment < Exception; end
|
7
|
-
class ParseError
|
8
|
+
class ParseError < Exception; end
|
8
9
|
end
|
9
10
|
end
|
data/lib/hippo/field.rb
CHANGED
@@ -1,6 +1,92 @@
|
|
1
|
+
require 'date'
|
2
|
+
require 'time'
|
3
|
+
require 'bigdecimal'
|
4
|
+
|
1
5
|
module Hippo
|
2
6
|
class Field
|
3
|
-
attr_accessor :name, :sequence, :datatype, :options,
|
7
|
+
attr_accessor :name, :sequence, :datatype, :options,
|
8
|
+
:restrictions, :minimum, :maximum, :required,
|
9
|
+
:separator, :composite, :composite_sequence
|
10
|
+
|
11
|
+
def minimum
|
12
|
+
@minimum ||= 0
|
13
|
+
end
|
14
|
+
|
15
|
+
def formatted_value(value)
|
16
|
+
return nil if value.nil?
|
17
|
+
|
18
|
+
case datatype
|
19
|
+
when :binary then value
|
20
|
+
when :integer then value.to_i
|
21
|
+
when :decimal then BigDecimal.new(value.to_s)
|
22
|
+
when :date then parse_date(value)
|
23
|
+
when :time then parse_time(value)
|
24
|
+
else value.to_s
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def string_value(value)
|
29
|
+
return '' if value.nil? || value == ''
|
30
|
+
|
31
|
+
case datatype
|
32
|
+
when :binary then value
|
33
|
+
when :integer then value.to_s.rjust(minimum, '0')
|
34
|
+
when :decimal then value.to_s('F').sub(/\.0\z/,'').rjust(minimum, '0')
|
35
|
+
when :date
|
36
|
+
if maximum == 6
|
37
|
+
value.strftime('%y%m%d')
|
38
|
+
else
|
39
|
+
value.strftime('%Y%m%d')
|
40
|
+
end
|
41
|
+
when :time
|
42
|
+
if maximum == 4 || value.sec == 0
|
43
|
+
value.strftime('%H%M')
|
44
|
+
else
|
45
|
+
value.strftime('%H%M%S')
|
46
|
+
end
|
47
|
+
else value.to_s.ljust(minimum)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def parse_time(value)
|
52
|
+
case value.class.to_s
|
53
|
+
when 'Time' then value
|
54
|
+
when 'String'
|
55
|
+
format = case value
|
56
|
+
when /\A\d{4}\z/ then '%H%M'
|
57
|
+
when /\A\d{6}\z/ then '%H%M%S'
|
58
|
+
when /\A\d{7,8}\z/ then '%H%M%S%N'
|
59
|
+
else invalid!
|
60
|
+
end
|
61
|
+
|
62
|
+
Time.strptime(value, format)
|
63
|
+
else invalid!
|
64
|
+
end
|
65
|
+
rescue
|
66
|
+
invalid!
|
67
|
+
end
|
68
|
+
|
69
|
+
def parse_date(value)
|
70
|
+
case value.class.to_s
|
71
|
+
when "Date" then value
|
72
|
+
when "Time" then value.to_date
|
73
|
+
when "String"
|
74
|
+
format = case value
|
75
|
+
when /\A\d{6}\z/ then '%y%m%d'
|
76
|
+
when /\A\d{8}\z/ then '%Y%m%d'
|
77
|
+
else invalid!
|
78
|
+
end
|
79
|
+
|
80
|
+
Date.parse(value, format)
|
81
|
+
else
|
82
|
+
invalid! "Invalid datatype(#{value.class}) for date field."
|
83
|
+
end
|
84
|
+
rescue
|
85
|
+
invalid!
|
86
|
+
end
|
4
87
|
|
88
|
+
def invalid!(message = "Invalid value specified for #{self.datatype} field.")
|
89
|
+
raise Hippo::Exceptions::InvalidValue.new message
|
90
|
+
end
|
5
91
|
end
|
6
92
|
end
|
data/lib/hippo/parser/segment.rb
CHANGED
@@ -21,10 +21,10 @@ module Hippo
|
|
21
21
|
composite_fields.each_with_index do |comp_value, comp_index|
|
22
22
|
composite_field = field[comp_index]
|
23
23
|
|
24
|
-
self.values[composite_sequence][composite_field.sequence] = comp_value
|
24
|
+
self.values[composite_sequence][composite_field.sequence] = composite_field.formatted_value(comp_value)
|
25
25
|
end
|
26
26
|
else
|
27
|
-
self.values[field.sequence] = value
|
27
|
+
self.values[field.sequence] = field.formatted_value(value)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
data/lib/hippo/segments/AK1.rb
CHANGED
data/lib/hippo/segments/AK3.rb
CHANGED
data/lib/hippo/segments/AK4.rb
CHANGED
@@ -7,8 +7,7 @@ module Hippo::Segments
|
|
7
7
|
|
8
8
|
field :name => 'ElementPositionInSegment',
|
9
9
|
:sequence => 1,
|
10
|
-
:datatype => :
|
11
|
-
:decimal => 0,
|
10
|
+
:datatype => :integer,
|
12
11
|
:minimum => 1,
|
13
12
|
:maximum => 2,
|
14
13
|
:required => true,
|
@@ -16,8 +15,7 @@ module Hippo::Segments
|
|
16
15
|
|
17
16
|
field :name => 'ComponentDataElementPositionInComposite',
|
18
17
|
:sequence => 2,
|
19
|
-
:datatype => :
|
20
|
-
:decimal => 0,
|
18
|
+
:datatype => :integer,
|
21
19
|
:minimum => 1,
|
22
20
|
:maximum => 2,
|
23
21
|
:required => false,
|
@@ -25,8 +23,7 @@ module Hippo::Segments
|
|
25
23
|
|
26
24
|
field :name => 'RepeatingDataElementPosition',
|
27
25
|
:sequence => 3,
|
28
|
-
:datatype => :
|
29
|
-
:decimal => 0,
|
26
|
+
:datatype => :integer,
|
30
27
|
:minimum => 1,
|
31
28
|
:maximum => 4,
|
32
29
|
:required => false,
|
@@ -36,8 +33,7 @@ module Hippo::Segments
|
|
36
33
|
|
37
34
|
field :name => 'DataElementReferenceNumber',
|
38
35
|
:sequence => 2,
|
39
|
-
:datatype => :
|
40
|
-
:decimal => 0,
|
36
|
+
:datatype => :integer,
|
41
37
|
:minimum => 1,
|
42
38
|
:maximum => 4,
|
43
39
|
:required => false,
|
data/lib/hippo/segments/AK9.rb
CHANGED
@@ -13,8 +13,7 @@ module Hippo::Segments
|
|
13
13
|
|
14
14
|
field :name => 'NumberOfTransactionSetsIncluded',
|
15
15
|
:sequence => 2,
|
16
|
-
:datatype => :
|
17
|
-
:decimal => 0,
|
16
|
+
:datatype => :integer,
|
18
17
|
:minimum => 1,
|
19
18
|
:maximum => 6,
|
20
19
|
:required => true,
|
@@ -22,8 +21,7 @@ module Hippo::Segments
|
|
22
21
|
|
23
22
|
field :name => 'NumberOfReceivedTransactionSets',
|
24
23
|
:sequence => 3,
|
25
|
-
:datatype => :
|
26
|
-
:decimal => 0,
|
24
|
+
:datatype => :integer,
|
27
25
|
:minimum => 1,
|
28
26
|
:maximum => 6,
|
29
27
|
:required => true,
|
@@ -31,8 +29,7 @@ module Hippo::Segments
|
|
31
29
|
|
32
30
|
field :name => 'NumberOfAcceptedTransactionSets',
|
33
31
|
:sequence => 4,
|
34
|
-
:datatype => :
|
35
|
-
:decimal => 0,
|
32
|
+
:datatype => :integer,
|
36
33
|
:minimum => 1,
|
37
34
|
:maximum => 6,
|
38
35
|
:required => true,
|
data/lib/hippo/segments/AMT.rb
CHANGED
data/lib/hippo/segments/BPR.rb
CHANGED
data/lib/hippo/segments/CAS.rb
CHANGED
@@ -21,7 +21,7 @@ module Hippo::Segments
|
|
21
21
|
|
22
22
|
field :name => 'MonetaryAmount',
|
23
23
|
:sequence => 3,
|
24
|
-
:datatype => :
|
24
|
+
:datatype => :decimal,
|
25
25
|
:minimum => 1,
|
26
26
|
:maximum => 18,
|
27
27
|
:required => true,
|
@@ -29,7 +29,7 @@ module Hippo::Segments
|
|
29
29
|
|
30
30
|
field :name => 'Quantity',
|
31
31
|
:sequence => 4,
|
32
|
-
:datatype => :
|
32
|
+
:datatype => :decimal,
|
33
33
|
:minimum => 1,
|
34
34
|
:maximum => 15,
|
35
35
|
:required => false,
|
@@ -45,7 +45,7 @@ module Hippo::Segments
|
|
45
45
|
|
46
46
|
field :name => 'MonetaryAmount',
|
47
47
|
:sequence => 6,
|
48
|
-
:datatype => :
|
48
|
+
:datatype => :decimal,
|
49
49
|
:minimum => 1,
|
50
50
|
:maximum => 18,
|
51
51
|
:required => false,
|
@@ -53,7 +53,7 @@ module Hippo::Segments
|
|
53
53
|
|
54
54
|
field :name => 'Quantity',
|
55
55
|
:sequence => 7,
|
56
|
-
:datatype => :
|
56
|
+
:datatype => :decimal,
|
57
57
|
:minimum => 1,
|
58
58
|
:maximum => 15,
|
59
59
|
:required => false,
|
@@ -69,7 +69,7 @@ module Hippo::Segments
|
|
69
69
|
|
70
70
|
field :name => 'MonetaryAmount',
|
71
71
|
:sequence => 9,
|
72
|
-
:datatype => :
|
72
|
+
:datatype => :decimal,
|
73
73
|
:minimum => 1,
|
74
74
|
:maximum => 18,
|
75
75
|
:required => false,
|
@@ -77,7 +77,7 @@ module Hippo::Segments
|
|
77
77
|
|
78
78
|
field :name => 'Quantity',
|
79
79
|
:sequence => 10,
|
80
|
-
:datatype => :
|
80
|
+
:datatype => :decimal,
|
81
81
|
:minimum => 1,
|
82
82
|
:maximum => 15,
|
83
83
|
:required => false,
|
@@ -93,7 +93,7 @@ module Hippo::Segments
|
|
93
93
|
|
94
94
|
field :name => 'MonetaryAmount',
|
95
95
|
:sequence => 12,
|
96
|
-
:datatype => :
|
96
|
+
:datatype => :decimal,
|
97
97
|
:minimum => 1,
|
98
98
|
:maximum => 18,
|
99
99
|
:required => false,
|
@@ -101,7 +101,7 @@ module Hippo::Segments
|
|
101
101
|
|
102
102
|
field :name => 'Quantity',
|
103
103
|
:sequence => 13,
|
104
|
-
:datatype => :
|
104
|
+
:datatype => :decimal,
|
105
105
|
:minimum => 1,
|
106
106
|
:maximum => 15,
|
107
107
|
:required => false,
|
@@ -117,7 +117,7 @@ module Hippo::Segments
|
|
117
117
|
|
118
118
|
field :name => 'MonetaryAmount',
|
119
119
|
:sequence => 15,
|
120
|
-
:datatype => :
|
120
|
+
:datatype => :decimal,
|
121
121
|
:minimum => 1,
|
122
122
|
:maximum => 18,
|
123
123
|
:required => false,
|
@@ -125,7 +125,7 @@ module Hippo::Segments
|
|
125
125
|
|
126
126
|
field :name => 'Quantity',
|
127
127
|
:sequence => 16,
|
128
|
-
:datatype => :
|
128
|
+
:datatype => :decimal,
|
129
129
|
:minimum => 1,
|
130
130
|
:maximum => 15,
|
131
131
|
:required => false,
|
@@ -141,7 +141,7 @@ module Hippo::Segments
|
|
141
141
|
|
142
142
|
field :name => 'MonetaryAmount',
|
143
143
|
:sequence => 18,
|
144
|
-
:datatype => :
|
144
|
+
:datatype => :decimal,
|
145
145
|
:minimum => 1,
|
146
146
|
:maximum => 18,
|
147
147
|
:required => false,
|
@@ -149,7 +149,7 @@ module Hippo::Segments
|
|
149
149
|
|
150
150
|
field :name => 'Quantity',
|
151
151
|
:sequence => 19,
|
152
|
-
:datatype => :
|
152
|
+
:datatype => :decimal,
|
153
153
|
:minimum => 1,
|
154
154
|
:maximum => 15,
|
155
155
|
:required => false,
|
data/lib/hippo/segments/CLM.rb
CHANGED
data/lib/hippo/segments/CLP.rb
CHANGED
@@ -21,7 +21,7 @@ module Hippo::Segments
|
|
21
21
|
|
22
22
|
field :name => 'MonetaryAmount',
|
23
23
|
:sequence => 3,
|
24
|
-
:datatype => :
|
24
|
+
:datatype => :decimal,
|
25
25
|
:minimum => 1,
|
26
26
|
:maximum => 18,
|
27
27
|
:required => true,
|
@@ -29,7 +29,7 @@ module Hippo::Segments
|
|
29
29
|
|
30
30
|
field :name => 'MonetaryAmount',
|
31
31
|
:sequence => 4,
|
32
|
-
:datatype => :
|
32
|
+
:datatype => :decimal,
|
33
33
|
:minimum => 1,
|
34
34
|
:maximum => 18,
|
35
35
|
:required => true,
|
@@ -37,7 +37,7 @@ module Hippo::Segments
|
|
37
37
|
|
38
38
|
field :name => 'MonetaryAmount',
|
39
39
|
:sequence => 5,
|
40
|
-
:datatype => :
|
40
|
+
:datatype => :decimal,
|
41
41
|
:minimum => 1,
|
42
42
|
:maximum => 18,
|
43
43
|
:required => false,
|
@@ -93,7 +93,7 @@ module Hippo::Segments
|
|
93
93
|
|
94
94
|
field :name => 'Quantity',
|
95
95
|
:sequence => 12,
|
96
|
-
:datatype => :
|
96
|
+
:datatype => :decimal,
|
97
97
|
:minimum => 1,
|
98
98
|
:maximum => 15,
|
99
99
|
:required => false,
|
@@ -101,7 +101,7 @@ module Hippo::Segments
|
|
101
101
|
|
102
102
|
field :name => 'PercentageAsDecimal',
|
103
103
|
:sequence => 13,
|
104
|
-
:datatype => :
|
104
|
+
:datatype => :decimal,
|
105
105
|
:minimum => 1,
|
106
106
|
:maximum => 10,
|
107
107
|
:required => false,
|
data/lib/hippo/segments/CN1.rb
CHANGED
@@ -13,7 +13,7 @@ module Hippo::Segments
|
|
13
13
|
|
14
14
|
field :name => 'MonetaryAmount',
|
15
15
|
:sequence => 2,
|
16
|
-
:datatype => :
|
16
|
+
:datatype => :decimal,
|
17
17
|
:minimum => 1,
|
18
18
|
:maximum => 18,
|
19
19
|
:required => false,
|
@@ -21,7 +21,7 @@ module Hippo::Segments
|
|
21
21
|
|
22
22
|
field :name => 'PercentDecimalFormat',
|
23
23
|
:sequence => 3,
|
24
|
-
:datatype => :
|
24
|
+
:datatype => :decimal,
|
25
25
|
:minimum => 1,
|
26
26
|
:maximum => 6,
|
27
27
|
:required => false,
|
@@ -37,7 +37,7 @@ module Hippo::Segments
|
|
37
37
|
|
38
38
|
field :name => 'TermsDiscountPercent',
|
39
39
|
:sequence => 5,
|
40
|
-
:datatype => :
|
40
|
+
:datatype => :decimal,
|
41
41
|
:minimum => 1,
|
42
42
|
:maximum => 6,
|
43
43
|
:required => false,
|
data/lib/hippo/segments/CR1.rb
CHANGED
@@ -13,7 +13,7 @@ module Hippo::Segments
|
|
13
13
|
|
14
14
|
field :name => 'Weight',
|
15
15
|
:sequence => 2,
|
16
|
-
:datatype => :
|
16
|
+
:datatype => :decimal,
|
17
17
|
:minimum => 1,
|
18
18
|
:maximum => 10,
|
19
19
|
:required => false,
|
@@ -45,7 +45,7 @@ module Hippo::Segments
|
|
45
45
|
|
46
46
|
field :name => 'Quantity',
|
47
47
|
:sequence => 6,
|
48
|
-
:datatype => :
|
48
|
+
:datatype => :decimal,
|
49
49
|
:minimum => 1,
|
50
50
|
:maximum => 15,
|
51
51
|
:required => false,
|
data/lib/hippo/segments/CR2.rb
CHANGED
@@ -5,8 +5,7 @@ module Hippo::Segments
|
|
5
5
|
|
6
6
|
field :name => 'Count',
|
7
7
|
:sequence => 1,
|
8
|
-
:datatype => :
|
9
|
-
:decimal => 0,
|
8
|
+
:datatype => :integer,
|
10
9
|
:minimum => 1,
|
11
10
|
:maximum => 9,
|
12
11
|
:required => false,
|
@@ -14,7 +13,7 @@ module Hippo::Segments
|
|
14
13
|
|
15
14
|
field :name => 'Quantity',
|
16
15
|
:sequence => 2,
|
17
|
-
:datatype => :
|
16
|
+
:datatype => :decimal,
|
18
17
|
:minimum => 1,
|
19
18
|
:maximum => 15,
|
20
19
|
:required => false,
|
@@ -46,7 +45,7 @@ module Hippo::Segments
|
|
46
45
|
|
47
46
|
field :name => 'Quantity',
|
48
47
|
:sequence => 6,
|
49
|
-
:datatype => :
|
48
|
+
:datatype => :decimal,
|
50
49
|
:minimum => 1,
|
51
50
|
:maximum => 15,
|
52
51
|
:required => false,
|
@@ -54,7 +53,7 @@ module Hippo::Segments
|
|
54
53
|
|
55
54
|
field :name => 'Quantity',
|
56
55
|
:sequence => 7,
|
57
|
-
:datatype => :
|
56
|
+
:datatype => :decimal,
|
58
57
|
:minimum => 1,
|
59
58
|
:maximum => 15,
|
60
59
|
:required => false,
|