eancom 1.6.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -4
  3. data/.gitlab-ci.yml +11 -13
  4. data/.ruby-version +1 -1
  5. data/Gemfile +2 -4
  6. data/Gemfile.lock +21 -103
  7. data/README.md +46 -0
  8. data/definitions/desadv/d01b.rb +134 -87
  9. data/definitions/desadv/d96a.rb +145 -82
  10. data/definitions/invoic/d01b.rb +559 -0
  11. data/definitions/invoic/d96a.rb +389 -0
  12. data/definitions/invrpt/d01b.rb +134 -0
  13. data/definitions/invrpt/d96a.rb +125 -0
  14. data/definitions/orders/d01b.rb +182 -0
  15. data/definitions/orders/d96b.rb +198 -0
  16. data/definitions/ordrsp/d01b.rb +251 -0
  17. data/definitions/ordrsp/d96b.rb +226 -0
  18. data/definitions/pricat/d01b.rb +225 -0
  19. data/definitions/pricat/d96b.rb +207 -0
  20. data/definitions/retann/d01b.rb +172 -0
  21. data/definitions/retann/d96b.rb +221 -0
  22. data/definitions/segments/ajt.rb +47 -0
  23. data/definitions/segments/alc.rb +128 -36
  24. data/definitions/segments/bgm.rb +122 -2
  25. data/definitions/segments/cdi.rb +39 -0
  26. data/definitions/segments/cnt.rb +4 -0
  27. data/definitions/segments/cta.rb +89 -0
  28. data/definitions/segments/cux.rb +9 -2
  29. data/definitions/segments/dgs.rb +34 -0
  30. data/definitions/segments/doc.rb +45 -0
  31. data/definitions/segments/dtm.rb +75 -20
  32. data/definitions/segments/efi.rb +67 -0
  33. data/definitions/segments/eqd.rb +37 -0
  34. data/definitions/segments/ftx.rb +22 -8
  35. data/definitions/segments/gin.rb +113 -0
  36. data/definitions/segments/imd.rb +9 -13
  37. data/definitions/segments/inv.rb +94 -0
  38. data/definitions/segments/lin.rb +24 -4
  39. data/definitions/segments/loc.rb +52 -4
  40. data/definitions/segments/moa.rb +86 -2
  41. data/definitions/segments/nad.rb +69 -9
  42. data/definitions/segments/pac.rb +12 -0
  43. data/definitions/segments/pat.rb +171 -0
  44. data/definitions/segments/pcd.rb +9 -92
  45. data/definitions/segments/pci.rb +110 -0
  46. data/definitions/segments/pgi.rb +7 -3
  47. data/definitions/segments/pia.rb +21 -29
  48. data/definitions/segments/pri.rb +25 -13
  49. data/definitions/segments/qty.rb +208 -2
  50. data/definitions/segments/rff.rb +49 -13
  51. data/definitions/segments/rte.rb +52 -0
  52. data/definitions/segments/tax.rb +17 -10
  53. data/definitions/segments/tdt.rb +24 -0
  54. data/definitions/segments/tod.rb +64 -0
  55. data/definitions/segments/tru.rb +34 -0
  56. data/definitions/segments/una.rb +8 -8
  57. data/definitions/segments/unb.rb +4 -4
  58. data/definitions/segments/unh.rb +70 -5
  59. data/definitions/segments/uns.rb +2 -2
  60. data/definitions/segments/unt.rb +2 -2
  61. data/definitions/slsrpt/d01b.rb +132 -128
  62. data/definitions/slsrpt/d96a.rb +132 -129
  63. data/eancom.gemspec +5 -8
  64. data/lib/eancom/edifact/body.rb +37 -18
  65. data/lib/eancom/edifact/document.rb +20 -16
  66. data/lib/eancom/edifact/footer.rb +1 -0
  67. data/lib/eancom/edifact/item.rb +1 -1
  68. data/lib/eancom/edifact/message.rb +7 -39
  69. data/lib/eancom/edifact/segment.rb +9 -11
  70. data/lib/eancom/edifact/segments/ajt.rb +32 -0
  71. data/lib/eancom/edifact/segments/ali.rb +2 -4
  72. data/lib/eancom/edifact/segments/bgm.rb +4 -3
  73. data/lib/eancom/edifact/segments/cdi.rb +30 -0
  74. data/lib/eancom/edifact/segments/cnt.rb +8 -1
  75. data/lib/eancom/edifact/segments/cps.rb +4 -1
  76. data/lib/eancom/edifact/segments/cta.rb +30 -0
  77. data/lib/eancom/edifact/segments/cux.rb +1 -1
  78. data/lib/eancom/edifact/segments/dgs.rb +31 -0
  79. data/lib/eancom/edifact/segments/doc.rb +30 -0
  80. data/lib/eancom/edifact/segments/dtm.rb +10 -6
  81. data/lib/eancom/edifact/segments/efi.rb +38 -0
  82. data/lib/eancom/edifact/segments/eqd.rb +30 -0
  83. data/lib/eancom/edifact/segments/ftx.rb +2 -2
  84. data/lib/eancom/edifact/segments/gin.rb +45 -0
  85. data/lib/eancom/edifact/segments/imd.rb +1 -1
  86. data/lib/eancom/edifact/segments/inv.rb +43 -0
  87. data/lib/eancom/edifact/segments/lin.rb +7 -4
  88. data/lib/eancom/edifact/segments/loc.rb +8 -9
  89. data/lib/eancom/edifact/segments/mea.rb +1 -0
  90. data/lib/eancom/edifact/segments/moa.rb +3 -3
  91. data/lib/eancom/edifact/segments/nad.rb +11 -6
  92. data/lib/eancom/edifact/segments/pac.rb +3 -1
  93. data/lib/eancom/edifact/segments/pat.rb +37 -0
  94. data/lib/eancom/edifact/segments/pcd.rb +6 -17
  95. data/lib/eancom/edifact/segments/pci.rb +40 -0
  96. data/lib/eancom/edifact/segments/pia.rb +1 -0
  97. data/lib/eancom/edifact/segments/pri.rb +0 -1
  98. data/lib/eancom/edifact/segments/qty.rb +9 -5
  99. data/lib/eancom/edifact/segments/rff.rb +8 -2
  100. data/lib/eancom/edifact/segments/rte.rb +33 -0
  101. data/lib/eancom/edifact/segments/tax.rb +7 -1
  102. data/lib/eancom/edifact/segments/tdt.rb +4 -1
  103. data/lib/eancom/edifact/segments/tod.rb +33 -0
  104. data/lib/eancom/edifact/segments/tru.rb +31 -0
  105. data/lib/eancom/edifact/segments/una.rb +2 -1
  106. data/lib/eancom/edifact/segments/unb.rb +4 -5
  107. data/lib/eancom/edifact/segments/unh.rb +6 -4
  108. data/lib/eancom/edifact/segments/uns.rb +4 -1
  109. data/lib/eancom/edifact/structure.rb +0 -1
  110. data/lib/eancom/edifact.rb +15 -4
  111. data/lib/eancom/factory.rb +1 -1
  112. data/lib/eancom/parser/document.rb +3 -16
  113. data/lib/eancom/parser/segment.rb +9 -10
  114. data/lib/eancom/version.rb +1 -3
  115. data/lib/eancom.rb +3 -1
  116. data/pricat.json +1 -0
  117. metadata +45 -51
  118. data/.rubocop.yml +0 -2
  119. data/.tool-versions +0 -1
  120. data/definitions/segments/qvr.rb +0 -140
  121. data/lib/eancom/edifact/location.rb +0 -56
  122. data/lib/eancom/edifact/segments/qvr.rb +0 -50
@@ -2,7 +2,7 @@ module Eancom
2
2
  module Edifact
3
3
  class ALI < Segment
4
4
  TAG = 'ALI'.freeze
5
- TYPE = :body.freeze
5
+ TYPE = :body
6
6
 
7
7
  attr_reader :segment_type
8
8
 
@@ -38,15 +38,13 @@ module Eancom
38
38
  hash.merge!(special_condition_code_4: find_identifier(:special_condition_code_4)) if @special_condition_code_4
39
39
  hash.merge!(special_condition_code_5: find_identifier(:special_condition_code_5)) if @special_condition_code_5
40
40
  outer_hash = {}
41
- outer_hash.merge!(additional_information: hash )
41
+ outer_hash.merge!(additional_information: hash)
42
42
  outer_hash
43
43
  end
44
44
 
45
45
  def segment_type
46
46
  TYPE
47
47
  end
48
-
49
-
50
48
  end
51
49
  end
52
50
  end
@@ -8,7 +8,7 @@ module Eancom
8
8
 
9
9
  def initialize(
10
10
  tag: nil,
11
- document_name_code: nil,
11
+ document_name_code:,
12
12
  code_list_responsible_agency_code: nil,
13
13
  code_list_identification_code: nil,
14
14
  document_name: nil,
@@ -28,7 +28,9 @@ module Eancom
28
28
 
29
29
  def to_json_hash
30
30
  {
31
- document_identifier: @document_identifier
31
+ document_name_code: @document_name_code,
32
+ document_identifier: @document_identifier,
33
+ message_function_code: @message_function_code
32
34
  }
33
35
  end
34
36
 
@@ -39,7 +41,6 @@ module Eancom
39
41
  def segment_type
40
42
  TYPE
41
43
  end
42
-
43
44
  end
44
45
  end
45
46
  end
@@ -0,0 +1,30 @@
1
+ module Eancom
2
+ module Edifact
3
+ class CDI < Segment
4
+ TAG = 'CDI'.freeze
5
+ TYPE = :body.freeze
6
+
7
+ attr_reader :segment_type
8
+
9
+ def initialize(
10
+ tag: nil,
11
+ physical_or_logical_state_type_code_qualifier: nil
12
+ )
13
+
14
+ @tag = tag
15
+ @physical_or_logical_state_type_code_qualifier = physical_or_logical_state_type_code_qualifier
16
+ super(tag: @tag || TAG)
17
+ end
18
+
19
+ def to_json_hash
20
+ hash = {}
21
+ hash.merge!(physical_or_logical_state_type_code_qualifier: find_identifier(:physical_or_logical_state_type_code_qualifier)) if @physical_or_logical_state_type_code_qualifier
22
+ hash
23
+ end
24
+
25
+ def segment_type
26
+ TYPE
27
+ end
28
+ end
29
+ end
30
+ end
@@ -21,7 +21,14 @@ module Eancom
21
21
  end
22
22
 
23
23
  def to_json_hash
24
- {}
24
+ hash = {}
25
+ hash.merge!(control_total_type_code_quantifier: find_identifier(:control_total_type_code_quantifier)) if @control_total_type_code_quantifier
26
+ hash.merge!(control_total_value: @control_total_value) if @control_total_value
27
+ hash
28
+ end
29
+
30
+ def group_name
31
+ 'counts'
25
32
  end
26
33
 
27
34
  def segment_type
@@ -19,7 +19,10 @@ module Eancom
19
19
  end
20
20
 
21
21
  def to_json_hash
22
- {}
22
+ hash = {}
23
+ hash.merge!(hierarchical_structure_level_identifier: @hierarchical_structure_level_identifier) if @hierarchical_structure_level_identifier
24
+ hash.merge!(hierarchical_structure_parent_identifier: @hierarchical_structure_parent_identifier) if @hierarchical_structure_parent_identifier
25
+ hash
23
26
  end
24
27
 
25
28
  def segment_type
@@ -0,0 +1,30 @@
1
+ module Eancom
2
+ module Edifact
3
+ class CTA < Segment
4
+ TAG = 'CTA'.freeze
5
+ TYPE = :body
6
+
7
+ attr_reader :segment_type
8
+
9
+ def initialize(
10
+ tag: nil,
11
+ contact_function_code:
12
+ )
13
+
14
+ @tag = tag
15
+ @contact_function_code = contact_function_code
16
+ super(tag: tag || TAG)
17
+ end
18
+
19
+ def to_json_hash
20
+ hash = {}
21
+ hash.merge!(contact_function_code: find_identifier(:contact_function_code)) if @contact_function_code
22
+ hash
23
+ end
24
+
25
+ def segment_type
26
+ TYPE
27
+ end
28
+ end
29
+ end
30
+ end
@@ -10,7 +10,7 @@ module Eancom
10
10
  tag: nil,
11
11
  currency_usage_code_qualifier_1:,
12
12
  currency_identification_code_1:,
13
- currency_type_code_qualifier_1:,
13
+ currency_type_code_qualifier_1: nil,
14
14
  currency_rate_value_1: nil,
15
15
  currency_usage_code_qualifier_2: nil,
16
16
  currency_identification_code_2: nil,
@@ -0,0 +1,31 @@
1
+ module Eancom
2
+ module Edifact
3
+ class DGS < Segment
4
+ TAG = 'DGS'.freeze
5
+ TYPE = :body
6
+
7
+ attr_reader :segment_type
8
+
9
+ def initialize(
10
+ tag: nil,
11
+ hazard_identification_code:
12
+ )
13
+
14
+ @tag = tag
15
+ @hazard_identification_code = hazard_identification_code
16
+
17
+ super(tag: tag || TAG)
18
+ end
19
+
20
+ def to_json_hash
21
+ hash = {}
22
+ hash.merge!(hazard_identification_code: @hazard_identification_code)
23
+ hash
24
+ end
25
+
26
+ def segment_type
27
+ TYPE
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,30 @@
1
+ module Eancom
2
+ module Edifact
3
+ class DOC < Segment
4
+ TAG = 'DOC'.freeze
5
+ TYPE = :header
6
+
7
+ attr_reader :segment_type
8
+
9
+ def initialize(
10
+ tag: nil,
11
+ document_name_code:
12
+ )
13
+ @tag = tag
14
+ @document_name_code = document_name_code
15
+
16
+ super(tag: tag || TAG)
17
+ end
18
+
19
+ def to_json_hash
20
+ {
21
+ document_name_code: @document_name_code
22
+ }
23
+ end
24
+
25
+ def segment_type
26
+ TYPE
27
+ end
28
+ end
29
+ end
30
+ end
@@ -21,11 +21,16 @@ module Eancom
21
21
  end
22
22
 
23
23
  def to_json_hash
24
- {
25
- identifier => {
26
- date_time: @date_time
27
- }
28
- }
24
+ hash = { identifier => {} }
25
+ hash[identifier].merge!({ date_time: @date_time }) if @date_time
26
+
27
+ hash.merge!({ identifier: @identifier }) if @identifier
28
+ hash = {} if hash[identifier].empty?
29
+ hash
30
+ end
31
+
32
+ def group_name
33
+ 'date_time_messages'
29
34
  end
30
35
 
31
36
  def segment_type
@@ -40,4 +45,3 @@ module Eancom
40
45
  end
41
46
  end
42
47
  end
43
-
@@ -0,0 +1,38 @@
1
+ module Eancom
2
+ module Edifact
3
+ class EFI < Segment
4
+ TAG = 'EFI'.freeze
5
+ TYPE = :body.freeze
6
+
7
+ attr_reader :segment_type
8
+
9
+ def initialize(
10
+ tag: nil,
11
+ file_name: nil,
12
+ file_format_name:,
13
+ data_format_description_code:
14
+ )
15
+
16
+ @tag = tag
17
+ @file_name = file_name
18
+ @file_format_name = file_format_name
19
+ @data_format_description_code = data_format_description_code
20
+
21
+ super(tag: tag || TAG)
22
+ end
23
+
24
+
25
+ def to_json_hash
26
+ hash = {}
27
+ hash.merge!(file_name: file_name) if @file_name
28
+ hash.merge!(file_format_name: file_format_name) if @file_format_name
29
+ hash.merge!(data_format_description_code: find_identifier(:data_format_description_code)) if @data_format_description_code
30
+ hash
31
+ end
32
+
33
+ def segment_type
34
+ TYPE
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,30 @@
1
+ module Eancom
2
+ module Edifact
3
+ class EQD < Segment
4
+ TAG = 'EQD'.freeze
5
+ TYPE = :header
6
+
7
+ attr_reader :segment_type
8
+
9
+ def initialize(
10
+ tag: nil,
11
+ equipment_code_qualifier: nil
12
+ )
13
+
14
+ @tag = tag
15
+ @equipment_code_qualifier = equipment_code_qualifier
16
+
17
+ super(tag: tag || TAG)
18
+ end
19
+
20
+ def to_json_hash
21
+ hash = {}
22
+ hash.merge!(equipment_code_qualifier: find_identifier(:equipment_code_qualifier)) if @equipment_code_qualifier
23
+ end
24
+
25
+ def segment_type
26
+ TYPE
27
+ end
28
+ end
29
+ end
30
+ end
@@ -38,14 +38,14 @@ module Eancom
38
38
  hash = {}
39
39
  hash.merge!(text_subject_code_qualifier: @text_subject_code_qualifier) if @text_subject_code_qualifier
40
40
  hash.merge!(free_text_function_code: find_identifier(:free_text_function_code)) if @free_text_function_code
41
- hash.merge!(free_text_value_code: @free_text_value_code) if @free_text_value_code
41
+ hash.merge!(free_text_value_code: find_identifier(:free_text_value_code)) if @free_text_value_code
42
42
  hash.merge!(code_list_identification_code: @code_list_identification_code) if @code_list_identification_code
43
43
  hash.merge!(code_list_responsible_agency_code: find_identifier(:code_list_responsible_agency_code)) if @code_list_responsible_agency_code
44
44
  hash.merge!(free_text_value_1: @free_text_value_1) if @free_text_value_1
45
45
  hash.merge!(free_text_value_2: @free_text_value_2) if @free_text_value_2
46
46
  hash.merge!(free_text_value_3: @free_text_value_3) if @free_text_value_3
47
47
  hash.merge!(free_text_value_4: @free_text_value_4) if @free_text_value_4
48
- hash.merge!(free_text_value_5: @free_text_value_5) if @free_text_value_4
48
+ hash.merge!(free_text_value_5: @free_text_value_5) if @free_text_value_5
49
49
  hash
50
50
  end
51
51
 
@@ -0,0 +1,45 @@
1
+ module Eancom
2
+ module Edifact
3
+ class GIN < Segment
4
+ TAG = 'GIN'.freeze
5
+ TYPE = :body.freeze
6
+
7
+ attr_reader :segment_type
8
+
9
+ def initialize(
10
+ tag: nil,
11
+ object_identification_code_qualifier:,
12
+ object_identifier_1: nil,
13
+ object_identifier_2: nil,
14
+ object_identifier_3: nil,
15
+ object_identifier_4: nil,
16
+ object_identifier_5: nil
17
+ )
18
+ @tag = tag
19
+ @object_identification_code_qualifier = object_identification_code_qualifier
20
+ @object_identifier_1 = object_identifier_1
21
+ @object_identifier_2 = object_identifier_2
22
+ @object_identifier_3 = object_identifier_3
23
+ @object_identifier_4 = object_identifier_4
24
+ @object_identifier_5 = object_identifier_5
25
+
26
+ super(tag: @tag || TAG)
27
+ end
28
+
29
+ def to_json_hash
30
+ hash = {}
31
+ hash.merge!(object_identification_code_qualifier: @object_identification_code_qualifier) if @object_identification_code_qualifier
32
+ hash.merge!(object_identifier_1: @object_identifier_1) if @object_identifier_1
33
+ hash.merge!(object_identifier_2: @object_identifier_2) if @object_identifier_2
34
+ hash.merge!(object_identifier_3: @object_identifier_3) if @object_identifier_3
35
+ hash.merge!(object_identifier_4: @object_identifier_4) if @object_identifier_4
36
+ hash.merge!(object_identifier_5: @object_identifier_5) if @object_identifier_5
37
+ hash
38
+ end
39
+
40
+ def segment_type
41
+ TYPE
42
+ end
43
+ end
44
+ end
45
+ end
@@ -38,7 +38,7 @@ module Eancom
38
38
  hash = {}
39
39
  hash.merge!(description_format_code: find_identifier(:description_format_code)) if @description_format_code
40
40
  hash.merge!(item_characteristic_code: find_identifier(:item_characteristic_code)) if @item_characteristic_code
41
- hash.merge!(code_list_identification_code: @code_list_identification_code) if @code_list_identification_code
41
+ hash.merge!(code_list_identification_code: find_identifier(:code_list_identification_code)) if @code_list_identification_code
42
42
  hash.merge!(code_list_responsible_agency_code: find_identifier(:code_list_responsible_agency_code)) if @code_list_responsible_agency_code
43
43
  if @item_description_code
44
44
  identifier = find_identifier(:item_description_code)
@@ -0,0 +1,43 @@
1
+ module Eancom
2
+ module Edifact
3
+ class INV < Segment
4
+ TAG = 'INV'.freeze
5
+ TYPE = :body
6
+
7
+ attr_reader :segment_type
8
+
9
+ def initialize(
10
+ tag: nil,
11
+ inventory_movement_direction_code:,
12
+ inventory_type_code: nil,
13
+ inventory_movement_reason_code: nil,
14
+ inventory_balance_method_code: nil
15
+ )
16
+
17
+ @tag = tag
18
+ @inventory_movement_direction_code = inventory_movement_direction_code
19
+ @inventory_type_code = inventory_type_code
20
+ @inventory_movement_reason_code = inventory_movement_reason_code
21
+ @inventory_balance_method_code = inventory_balance_method_code
22
+ super(tag: tag || TAG)
23
+ end
24
+
25
+ def to_json_hash
26
+ hash = {}
27
+ hash.merge!(inventory_movement_direction_code: find_identifier(:inventory_movement_direction_code)) if @inventory_movement_direction_code
28
+ hash.merge!(inventory_type_code: @inventory_type_code) if @inventory_type_code
29
+ hash.merge!(inventory_movement_reason_code: @inventory_movement_reason_code) if @inventory_movement_reason_code
30
+ hash.merge!(inventory_balance_method_code: @inventory_balance_method_code) if @inventory_balance_method_code
31
+ hash
32
+ end
33
+
34
+ def group_name
35
+ 'inventory'
36
+ end
37
+
38
+ def segment_type
39
+ TYPE
40
+ end
41
+ end
42
+ end
43
+ end
@@ -29,10 +29,13 @@ module Eancom
29
29
  end
30
30
 
31
31
  def to_json_hash
32
- {
33
- line_item_identifier_1: @line_item_identifier_1,
34
- ean: @item_identifier
35
- }
32
+ hash = {}
33
+ hash.merge!(ean: @item_identifier) if @item_identifier
34
+ hash.merge!(action_request_notification_description_code: @action_request_notification_description_code) if @action_request_notification_description_code
35
+ hash.merge!(item_type_identification_code: find_identifier(:item_type_identification_code)) if @item_type_identification_code
36
+ hash.merge!(sub_line_indicator_code: @sub_line_indicator_code) if @sub_line_indicator_code
37
+ hash.merge!(line_item_identifier_2: @line_item_identifier_2) if @line_item_identifier_2
38
+ hash
36
39
  end
37
40
 
38
41
  def segment_type
@@ -9,15 +9,17 @@ module Eancom
9
9
  def initialize(
10
10
  tag: nil,
11
11
  location_function_qualifier:,
12
- location_name_code:,
12
+ location_name_code: nil,
13
+ first_related_name_code: nil,
13
14
  code_list_identification_code: nil,
14
- code_list_responsible_agancy_code: nil
15
+ code_list_responsible_agency_code: nil
15
16
  )
16
17
  @tag = tag
17
18
  @location_function_qualifier = location_function_qualifier
18
19
  @location_name_code = location_name_code
20
+ @first_related_name_code = first_related_name_code
19
21
  @code_list_identification_code = code_list_identification_code
20
- @code_list_responsible_agancy_code = code_list_responsible_agancy_code
22
+ @code_list_responsible_agency_code = code_list_responsible_agency_code
21
23
 
22
24
  super(tag: tag || TAG)
23
25
  end
@@ -26,18 +28,15 @@ module Eancom
26
28
  hash = {}
27
29
  hash.merge!(location_function_qualifier: find_identifier(:location_function_qualifier)) if @location_function_qualifier
28
30
  hash.merge!(location_name_code: @location_name_code) if @location_name_code
31
+ hash.merge!(first_related_name_code: @first_related_name_code) if @first_related_name_code
29
32
  hash.merge!(code_list_identification_code: @code_list_identification_code) if @code_list_identification_code
30
- hash.merge!(code_list_responsible_agancy_code: find_identifier(:code_list_responsible_agancy_code)) if @code_list_responsible_agancy_code
33
+ hash.merge!(code_list_responsible_agency_code: find_identifier(:code_list_responsible_agency_code)) if @code_list_responsible_agency_code
31
34
  hash
32
35
  outer_hash = {}
33
- outer_hash.merge!({ location: hash})
36
+ outer_hash.merge!({ location: hash })
34
37
  outer_hash
35
38
  end
36
39
 
37
- def starts_location?
38
- true
39
- end
40
-
41
40
  def segment_type
42
41
  TYPE
43
42
  end
@@ -34,6 +34,7 @@ module Eancom
34
34
  hash.merge!(measurement_purpose_code_qualifier: find_identifier(:measurement_purpose_code_qualifier)) if @measurement_purpose_code_qualifier
35
35
  hash.merge!(measured_attribute_code: find_identifier(:measured_attribute_code)) if @measured_attribute_code
36
36
  hash.merge!(measurement_significance_code: find_identifier(:measurement_significance_code)) if @measurement_significance_code
37
+ hash.merge!(measurment_unit_code: find_identifier(:measurment_unit_code)) if @measurment_unit_code
37
38
  hash.merge!(measurement_value: @measurement_value) if @measurement_value
38
39
  hash.merge!(range_minimum_value: @range_minimum_value) if @range_minimum_value
39
40
  hash.merge!(range_maximum_value: @range_maximum_value) if @range_maximum_value
@@ -2,14 +2,14 @@ module Eancom
2
2
  module Edifact
3
3
  class MOA < Segment
4
4
  TAG = 'MOA'.freeze
5
- TYPE = :body.freeze
5
+ TYPE = :footer.freeze
6
6
 
7
7
  attr_reader :segment_type
8
8
 
9
9
  def initialize(
10
10
  tag: nil,
11
11
  monetary_amount_type_code_qualifier:,
12
- monetary_amount:,
12
+ monetary_amount: nil,
13
13
  currency_identification_code: nil,
14
14
  currency_type_code_qualifier: nil
15
15
  )
@@ -28,7 +28,7 @@ module Eancom
28
28
  hash.merge!(monetary_amount_type_code_qualifier: find_identifier(:monetary_amount_type_code_qualifier)) if @monetary_amount_type_code_qualifier
29
29
  hash.merge!(monetary_amount: @monetary_amount) if @monetary_amount
30
30
  hash.merge!(currency_identification_code: @currency_identification_code) if @currency_identification_code
31
- hash.merge!(currency_type_code_qualifier: find_identifier(@currency_type_code_qualifier)) if @currency_type_code_qualifier
31
+ hash.merge!(currency_type_code_qualifier: find_identifier(:currency_type_code_qualifier)) if @currency_type_code_qualifier
32
32
  hash
33
33
  end
34
34
 
@@ -9,7 +9,7 @@ module Eancom
9
9
  party_function_code_qualifier:,
10
10
  party_identifier:,
11
11
  code_list_identification_code_1: '',
12
- code_list_responsible_agancy_code_1:,
12
+ code_list_responsible_agency_code_1: nil,
13
13
  name_and_address_description_1: nil,
14
14
  name_and_address_description_2: nil,
15
15
  name_and_address_description_3: nil,
@@ -28,7 +28,7 @@ module Eancom
28
28
  city_name: nil,
29
29
  country_sub_entity_name_code: nil,
30
30
  code_list_identification_code_2: nil,
31
- code_list_responsible_agancy_code_2: nil,
31
+ code_list_responsible_agency_code_2: nil,
32
32
  country_sub_entry_name: nil,
33
33
  postal_identification_code: nil,
34
34
  country_name_code: nil
@@ -37,7 +37,7 @@ module Eancom
37
37
  @party_function_code_qualifier = party_function_code_qualifier
38
38
  @party_identifier = party_identifier
39
39
  @code_list_identification_code_1 = code_list_identification_code_1
40
- @code_list_responsible_agancy_code_1 = code_list_responsible_agancy_code_1
40
+ @code_list_responsible_agency_code_1 = code_list_responsible_agency_code_1
41
41
  @name_and_address_description_1 = name_and_address_description_1
42
42
  @name_and_address_description_2 = name_and_address_description_2
43
43
  @name_and_address_description_3 = name_and_address_description_3
@@ -55,8 +55,8 @@ module Eancom
55
55
  @street_and_number_5 = street_and_number_5
56
56
  @city_name = city_name
57
57
  @country_sub_entity_name_code = country_sub_entity_name_code
58
- @code_list_identification_code_2 = code_list_identification_code_2
59
- @code_list_responsible_agancy_code_2 = code_list_responsible_agancy_code_2
58
+ @code_list_responsible_agency_code_2 = code_list_identification_code_2
59
+ @code_list_responsible_agency_code_2 = code_list_responsible_agency_code_2
60
60
  @country_sub_entry_name = country_sub_entry_name
61
61
  @postal_identification_code = postal_identification_code
62
62
  @country_name_code = country_name_code
@@ -66,7 +66,6 @@ module Eancom
66
66
  def to_json_hash
67
67
  hash = { identifier => {} }
68
68
  hash[identifier].merge!({ party_identifier: @party_identifier }) if @party_identifier
69
- hash[identifier].merge!(code_list_responsible_agancy_code_1: find_identifier(:code_list_responsible_agancy_code_1)) if @code_list_responsible_agancy_code_1
70
69
  hash[identifier].merge!({ name_and_address_description_1: @name_and_address_description_1 }) if @name_and_address_description_1
71
70
  hash[identifier].merge!({ name_and_address_description_2: @name_and_address_description_2 }) if @name_and_address_description_2
72
71
  hash[identifier].merge!({ name_and_address_description_3: @name_and_address_description_3 }) if @name_and_address_description_3
@@ -88,14 +87,20 @@ module Eancom
88
87
  hash[identifier].merge!({ postal_identification_code: @postal_identification_code }) if @postal_identification_code
89
88
  hash[identifier].merge!({ country_name_code: @country_name_code }) if @country_name_code
90
89
 
90
+ hash.merge!({ identifier: @identifier }) if @identifier
91
91
  hash = {} if hash[identifier].empty?
92
92
  hash
93
+
93
94
  end
94
95
 
95
96
  def segment_type
96
97
  TYPE
97
98
  end
98
99
 
100
+ def group_name
101
+ 'nads'
102
+ end
103
+
99
104
  private
100
105
 
101
106
  def identifier
@@ -43,7 +43,9 @@ module Eancom
43
43
  end
44
44
 
45
45
  def to_json_hash
46
- {}
46
+ hash = {}
47
+ hash.merge!(package_quantity: @package_quantity) if @package_quantity
48
+ hash
47
49
  end
48
50
 
49
51
  def segment_type
@@ -0,0 +1,37 @@
1
+ module Eancom
2
+ module Edifact
3
+ class PAT < Segment
4
+ TAG = 'PAT'.freeze
5
+ TYPE = :header
6
+
7
+ attr_reader :segment_type
8
+
9
+ def initialize(
10
+ tag: nil,
11
+ payment_terms_type_code_qualifier: nil,
12
+ payment_terms_type_description_identifier: nil,
13
+ time_reference_code: nil
14
+ )
15
+
16
+ @tag = tag,
17
+ @payment_terms_type_code_qualifier = payment_terms_type_code_qualifier,
18
+ @payment_terms_type_description_identifier = payment_terms_type_description_identifier,
19
+ @time_reference_code = time_reference_code
20
+
21
+ super(tag: tag || TAG)
22
+ end
23
+
24
+ def to_json_hash
25
+ hash = {}
26
+ hash.merge!(payment_terms_type_code_qualifier: find_identifier(:payment_terms_type_code_qualifier)) if @payment_terms_type_code_qualifier
27
+ hash.merge!(payment_terms_type_description_identifier: @payment_terms_type_description_identifier) if @payment_terms_type_description_identifier
28
+ hash.merge!(time_reference_code: @time_reference_code) if @time_reference_code
29
+ hash
30
+ end
31
+
32
+ def segment_type
33
+ TYPE
34
+ end
35
+ end
36
+ end
37
+ end