eddy 0.8.4 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -4
  3. data/CHANGELOG.md +18 -0
  4. data/Gemfile.lock +8 -8
  5. data/README.md +1 -1
  6. data/data/code-lists/333.tsv +8 -0
  7. data/data/segments/amt.segment.yml +7 -0
  8. data/data/segments/bia.segment.yml +10 -0
  9. data/data/segments/cur.segment.yml +8 -0
  10. data/data/segments/dtm.segment.yml +1 -0
  11. data/data/segments/fob.segment.yml +8 -0
  12. data/data/segments/itd.segment.yml +13 -0
  13. data/data/segments/mtx.segment.yml +7 -0
  14. data/data/segments/n9.segment.yml +7 -0
  15. data/data/segments/per.segment.yml +13 -0
  16. data/data/segments/po1.segment.yml +6 -0
  17. data/data/segments/po3.segment.yml +13 -0
  18. data/data/segments/qty.segment.yml +10 -0
  19. data/data/segments/ref.segment.yml +1 -0
  20. data/data/segments/sac.segment.yml +4 -0
  21. data/data/segments/sch.segment.yml +7 -0
  22. data/data/segments/sdq.segment.yml +8 -0
  23. data/data/segments/txi.segment.yml +9 -0
  24. data/data/transaction_sets/810.edi.yml +93 -0
  25. data/data/transaction_sets/846.edi.yml +57 -0
  26. data/data/transaction_sets/850.edi.yml +73 -0
  27. data/data/transaction_sets/855.edi.yml +74 -0
  28. data/data/transaction_sets/856.edi.yml +54 -0
  29. data/eddy.gemspec +1 -1
  30. data/exe/eddy +1 -0
  31. data/lib/definitions/elements/generated/100.currency_code.rb +200 -0
  32. data/lib/definitions/elements/generated/146.shipment_method_of_payment.rb +65 -0
  33. data/lib/definitions/elements/generated/1551.message_text.rb +29 -0
  34. data/lib/definitions/elements/generated/280.exchange_rate.rb +29 -0
  35. data/lib/definitions/elements/generated/309.location_qualifier.rb +209 -0
  36. data/lib/definitions/elements/generated/310.location_identifier.rb +29 -0
  37. data/lib/definitions/elements/generated/311.shipment_type_code.rb +42 -0
  38. data/lib/definitions/elements/generated/322.load_empty_status_code.rb +40 -0
  39. data/lib/definitions/elements/generated/325.tax_identification_number.rb +29 -0
  40. data/lib/definitions/elements/generated/333.terms_basis_date_code.rb +44 -0
  41. data/lib/definitions/elements/generated/336.terms_type_code.rb +102 -0
  42. data/lib/definitions/elements/generated/338.terms_discount_percent.rb +29 -0
  43. data/lib/definitions/elements/generated/351.terms_discount_days_due.rb +30 -0
  44. data/lib/definitions/elements/generated/363.note_reference_code.rb +278 -0
  45. data/lib/definitions/elements/generated/364.communication_number.rb +29 -0
  46. data/lib/definitions/elements/generated/365.communication_number_qualifier.rb +77 -0
  47. data/lib/definitions/elements/generated/366.contact_function_code.rb +267 -0
  48. data/lib/definitions/elements/generated/369.free_form_description.rb +29 -0
  49. data/lib/definitions/elements/generated/370.terms_discount_due_date.rb +29 -0
  50. data/lib/definitions/elements/generated/371.change_reason_code.rb +67 -0
  51. data/lib/definitions/elements/generated/378.allowance_charge_percent_qualifier.rb +48 -0
  52. data/lib/definitions/elements/generated/386.terms_net_days.rb +30 -0
  53. data/lib/definitions/elements/generated/446.terms_net_due_date.rb +29 -0
  54. data/lib/definitions/elements/generated/522.amount_qualifier_code.rb +1510 -0
  55. data/lib/definitions/elements/generated/673.quantity_qualifier.rb +869 -0
  56. data/lib/definitions/elements/generated/755.report_type_code.rb +559 -0
  57. data/lib/definitions/elements/generated/954.percent.rb +29 -0
  58. data/lib/definitions/elements/generated/963.tax_type_code.rb +111 -0
  59. data/lib/definitions/segments/generated/amt.rb +56 -0
  60. data/lib/definitions/segments/generated/bia.rb +107 -0
  61. data/lib/definitions/segments/generated/cur.rb +73 -0
  62. data/lib/definitions/segments/generated/dtm.rb +17 -0
  63. data/lib/definitions/segments/generated/fob.rb +73 -0
  64. data/lib/definitions/segments/generated/hl.rb +90 -0
  65. data/lib/definitions/segments/generated/itd.rb +158 -0
  66. data/lib/definitions/segments/generated/mtx.rb +56 -0
  67. data/lib/definitions/segments/generated/n2.rb +56 -0
  68. data/lib/definitions/segments/generated/n9.rb +56 -0
  69. data/lib/definitions/segments/generated/per.rb +158 -0
  70. data/lib/definitions/segments/generated/po1.rb +102 -0
  71. data/lib/definitions/segments/generated/po3.rb +158 -0
  72. data/lib/definitions/segments/generated/qty.rb +73 -0
  73. data/lib/definitions/segments/generated/ref.rb +17 -0
  74. data/lib/definitions/segments/generated/sac.rb +68 -0
  75. data/lib/definitions/segments/generated/sch.rb +56 -0
  76. data/lib/definitions/segments/generated/sdq.rb +73 -0
  77. data/lib/definitions/segments/generated/txi.rb +90 -0
  78. data/lib/definitions/transaction_sets/manual/846/846.rb +122 -0
  79. data/lib/definitions/transaction_sets/manual/846/loops/lin.rb +155 -0
  80. data/lib/definitions/transaction_sets/manual/846/loops/n1.rb +107 -0
  81. data/lib/definitions/transaction_sets/manual/846/loops/qty.rb +75 -0
  82. data/lib/definitions/transaction_sets/manual/846/loops/sch.rb +59 -0
  83. data/lib/definitions/transaction_sets/manual/846/loops/sln.rb +59 -0
  84. data/lib/definitions/transaction_sets/manual/850/850.rb +108 -1
  85. data/lib/definitions/transaction_sets/manual/850/loops/ctp.rb +47 -0
  86. data/lib/definitions/transaction_sets/manual/850/loops/n1.rb +31 -10
  87. data/lib/definitions/transaction_sets/manual/850/loops/n9.rb +59 -0
  88. data/lib/definitions/transaction_sets/manual/850/loops/pid.rb +47 -0
  89. data/lib/definitions/transaction_sets/manual/850/loops/po1.rb +78 -10
  90. data/lib/definitions/transaction_sets/manual/850/loops/sac.rb +47 -0
  91. data/lib/eddy.rb +49 -3
  92. data/lib/eddy/build/transaction_set_builder.rb +1 -1
  93. data/lib/eddy/config.rb +0 -21
  94. data/lib/eddy/data.rb +0 -29
  95. data/lib/eddy/data/persistence/base.rb +7 -0
  96. data/lib/eddy/data/persistence/memory.rb +14 -4
  97. data/lib/eddy/errors.rb +13 -9
  98. data/lib/eddy/models/element/composite.rb +2 -0
  99. data/lib/eddy/models/element/id.rb +1 -1
  100. data/lib/eddy/models/element/r.rb +1 -0
  101. data/lib/eddy/parse.rb +4 -56
  102. data/lib/eddy/parse/interchange.rb +58 -0
  103. data/lib/eddy/summary/loop.rb +1 -1
  104. data/lib/eddy/summary/segment.rb +2 -1
  105. data/lib/eddy/version.rb +1 -1
  106. metadata +78 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1a32819aa478f947399641cb8457f5a06e4a81d86f89881567da6857df815f5b
4
- data.tar.gz: 1e46e09711b93f043e0374e9d651f2f7498f18e87f13aaefd0e022be920668b6
3
+ metadata.gz: 8bc43221c915e9c746ad1adef91ee612a9a86e37529622960274bc052333fad1
4
+ data.tar.gz: 7520602c3ef65f24b40a3fd7ea007f41c568cb07a304e038bab4f9617cc7bc41
5
5
  SHA512:
6
- metadata.gz: 6f8f16313bca74dcd860787f2e94d349c1609e450d7efe0b6ebca76e4fa779d283477f282415f45f94fd55c304e2023ae554cdc0e8e371672466df82a95f0a7b
7
- data.tar.gz: 78e1996a735712303f6605124c002612d94f31e546fa5ee77f11510f4da3b41733cf313cdc9791e9737ef2119907316b8b4b58ac8c8c9ddefb811c605f3a2fd7
6
+ metadata.gz: 38311350797183f796764ee49f24c75212c45a88711833b445e110c40eb1206c46ffcd5594acd60051166930bab08eba726ed95ba7cfc9f9a68d9c7ea254e34a
7
+ data.tar.gz: 0d7d474a09a527c424e4db1fe3809593413648c869b9d1328cfe5d10f018b92bfdb49a839d5a446fb41fa6d4c2e753fe4ee3455db4f6d31eca191bb16ee21925
@@ -83,6 +83,10 @@ Naming/HeredocDelimiterNaming:
83
83
  Style/FormatString:
84
84
  EnforcedStyle: sprintf
85
85
 
86
+ Style/FormatStringToken:
87
+ # EnforcedStyle: template
88
+ Enabled: false
89
+
86
90
  # ==============================================================================
87
91
  # Numbers
88
92
  # ==============================================================================
@@ -107,10 +111,6 @@ Style/DefWithParentheses:
107
111
  Style/MethodCallWithoutArgsParentheses:
108
112
  Enabled: false
109
113
 
110
- # Only use braces if the function expects a hash argument. [different in Ruby 2.7+](https://blog.saeloun.com/2019/10/07/ruby-2-7-keyword-arguments-redesign.html)
111
- Style/BracesAroundHashParameters:
112
- Enabled: false
113
-
114
114
  Style/WordArray:
115
115
  EnforcedStyle: brackets
116
116
 
@@ -13,6 +13,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
13
13
 
14
14
  ## master (unreleased)
15
15
 
16
+ ## 0.9.0 (2020-07-03)
17
+
18
+ ### Added
19
+
20
+ - New Transaction Set definition:
21
+ - 846
22
+ - New Segment definitions:
23
+ - BIA
24
+ - CUR
25
+ - PER
26
+ - QTY
27
+ - SCH
28
+ - SDQ
29
+
30
+ ### Fixed
31
+
32
+ - Updated method call in `Eddy::Build::TransactionSetBuilder#build_loops`.
33
+
16
34
  ## 0.8.4 (2020-01-15)
17
35
 
18
36
  ### Changed
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- eddy (0.8.4)
4
+ eddy (0.9.0)
5
5
  ginny (~> 0.6.3)
6
6
  json_schemer (~> 0.2.8)
7
7
  thor (~> 1.0.1)
@@ -21,14 +21,14 @@ GEM
21
21
  tins (~> 1.6)
22
22
  docile (1.3.2)
23
23
  dry-inflector (0.2.0)
24
- ecma-re-validator (0.2.0)
24
+ ecma-re-validator (0.2.1)
25
25
  regexp_parser (~> 1.2)
26
26
  ginny (0.6.3)
27
27
  coolkit (~> 0.2.2)
28
28
  dry-inflector (~> 0.2.0)
29
- hana (1.3.5)
29
+ hana (1.3.6)
30
30
  json (2.3.0)
31
- json_schemer (0.2.8)
31
+ json_schemer (0.2.11)
32
32
  ecma-re-validator (~> 0.2)
33
33
  hana (~> 1.3)
34
34
  regexp_parser (~> 1.5)
@@ -45,8 +45,8 @@ GEM
45
45
  pry (0.12.2)
46
46
  coderay (~> 1.1.0)
47
47
  method_source (~> 0.9.0)
48
- rake (10.5.0)
49
- regexp_parser (1.6.0)
48
+ rake (13.0.1)
49
+ regexp_parser (1.7.1)
50
50
  ruby-progressbar (1.10.1)
51
51
  simplecov (0.16.1)
52
52
  docile (~> 1.1)
@@ -70,8 +70,8 @@ DEPENDENCIES
70
70
  minitest-focus (~> 1.1)
71
71
  minitest-reporters (~> 1.4)
72
72
  pry (~> 0.12.2)
73
- rake (~> 10.0)
73
+ rake (~> 13.0)
74
74
  simplecov (~> 0.16)
75
75
 
76
76
  BUNDLED WITH
77
- 2.0.2
77
+ 2.1.4
data/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
  [travis-ci]: https://travis-ci.org/tcd/eddy
11
11
  [coveralls]: https://coveralls.io/github/tcd/eddy?branch=master
12
12
  [license]: https://github.com/tcd/eddy/blob/master/LICENSE.txt
13
- [docs]: https://www.rubydoc.info/gems/eddy/0.8.4
13
+ [docs]: https://www.rubydoc.info/gems/eddy/0.9.0
14
14
 
15
15
  ## Installation
16
16
 
@@ -0,0 +1,8 @@
1
+ id definition
2
+ 1 Ship Date
3
+ 2 Delivery Date
4
+ 3 Invoice Date
5
+ 4 Specified Date
6
+ 5 Invoice Receipt Date
7
+ 6 Anticipated Delivery Date 7 Effective Date
8
+ 7 Effective Date
@@ -0,0 +1,7 @@
1
+ ---
2
+ id: AMT
3
+ name: Monetary Amount Information
4
+ purpose: To indicate the total monetary amount.
5
+ elements:
6
+ - { ref: AMT01, id: '522', req: M }
7
+ - { ref: AMT02, id: '782', req: M }
@@ -0,0 +1,10 @@
1
+ ---
2
+ id: BIA
3
+ name: Beginning Segment for Inventory Inquiry/Advice
4
+ purpose: To indicate the beginning of an Inventory Inquiry/Advice Transaction Set
5
+ elements:
6
+ - { ref: BIA01, id: '353', req: M }
7
+ - { ref: BIA02, id: '755', req: M }
8
+ - { ref: BIA03, id: '127', req: M }
9
+ - { ref: BIA04, id: '373', req: M }
10
+ - { ref: BIA05, id: '337', req: O }
@@ -0,0 +1,8 @@
1
+ ---
2
+ id: CUR
3
+ name: Currency
4
+ purpose: To specify the currency (dollars, pounds, francs, etc.) used in a transaction
5
+ elements:
6
+ - { ref: CUR01, id: '98', req: M }
7
+ - { ref: CUR02, id: '100', req: M }
8
+ - { ref: CUR03, id: '280', req: O }
@@ -5,3 +5,4 @@ purpose: To specify pertinent dates and times.
5
5
  elements:
6
6
  - { ref: DTM01, id: '374', req: M }
7
7
  - { ref: DTM02, id: '373', req: X }
8
+ - { ref: DTM03, id: '337', req: X }
@@ -0,0 +1,8 @@
1
+ ---
2
+ id: FOB
3
+ name: F.O.B. Related Instructions
4
+ purpose: To specify transportation instructions relating to shipment.
5
+ elements:
6
+ - { ref: FOB01, id: '146', req: M }
7
+ - { ref: FOB02, id: '309', req: X }
8
+ - { ref: FOB03, id: '352', req: O }
@@ -0,0 +1,13 @@
1
+ ---
2
+ id: ITD
3
+ name: Terms of Sale/Deferred Terms of Sale
4
+ purpose: To specify terms of sale.
5
+ elements:
6
+ - { ref: ITD01, id: '336', req: O }
7
+ - { ref: ITD02, id: '333', req: O }
8
+ - { ref: ITD03, id: '338', req: O }
9
+ - { ref: ITD04, id: '370', req: X }
10
+ - { ref: ITD05, id: '351', req: X }
11
+ - { ref: ITD06, id: '446', req: O }
12
+ - { ref: ITD07, id: '386', req: O }
13
+ - { ref: ITD12, id: '352', req: O }
@@ -0,0 +1,7 @@
1
+ ---
2
+ id: MTX
3
+ name: Text
4
+ purpose: To specify textual data.
5
+ elements:
6
+ - { ref: MTX01, id: '363', req: O }
7
+ - { ref: MTX02, id: '1551', req: X }
@@ -0,0 +1,7 @@
1
+ ---
2
+ id: N9
3
+ name: Extended Reference Information
4
+ purpose: To transmit identifying information as specified by the Reference Identification Qualifier.
5
+ elements:
6
+ - { ref: N901, id: '128', req: M }
7
+ - { ref: N903, id: '369', req: X }
@@ -0,0 +1,13 @@
1
+ ---
2
+ id: PER
3
+ name: Administrative Communications Contact
4
+ purpose: To identify a person or office to whom administrative communications should be directed
5
+ elements:
6
+ - { ref: PER01, id: '366', req: M }
7
+ - { ref: PER02, id: '93', req: O }
8
+ - { ref: PER03, id: '365', req: X }
9
+ - { ref: PER04, id: '364', req: X }
10
+ - { ref: PER05, id: '365', req: X }
11
+ - { ref: PER06, id: '364', req: X }
12
+ - { ref: PER07, id: '365', req: X }
13
+ - { ref: PER08, id: '364', req: X }
@@ -12,3 +12,9 @@ elements:
12
12
  - { ref: PO107, id: '234', req: X }
13
13
  - { ref: PO108, id: '235', req: X }
14
14
  - { ref: PO109, id: '234', req: X }
15
+ - { ref: PO110, id: '235', req: X }
16
+ - { ref: PO111, id: '234', req: X }
17
+ - { ref: PO112, id: '235', req: X }
18
+ - { ref: PO113, id: '234', req: X }
19
+ - { ref: PO114, id: '235', req: X }
20
+ - { ref: PO115, id: '234', req: X }
@@ -0,0 +1,13 @@
1
+ ---
2
+ id: PO3
3
+ name: Additional Item Detail
4
+ purpose: To specify additional item-related data involving variations in normal price/quantity structure.
5
+ elements:
6
+ - { ref: PO301, id: '371', req: M }
7
+ - { ref: PO302, id: '373', req: O }
8
+ - { ref: PO303, id: '236', req: X }
9
+ - { ref: PO304, id: '212', req: O }
10
+ - { ref: PO305, id: '639', req: X }
11
+ - { ref: PO306, id: '380', req: M }
12
+ - { ref: PO307, id: '355', req: M }
13
+ - { ref: PO308, id: '352', req: O }
@@ -0,0 +1,10 @@
1
+ ---
2
+ id: QTY
3
+ name: Quantity Information
4
+ purpose: To specify quantity information
5
+ elements:
6
+ - { ref: QTY01, id: '673', req: M }
7
+ - { ref: QTY02, id: '380', req: X }
8
+ - { ref: QTY03, id: '355', req: M }
9
+ # - { ref: QTY03, id: 'C001', req: O }
10
+ # - { ref: QTY03-01, id: '355', req: M }
@@ -5,3 +5,4 @@ purpose: To specify identifying information.
5
5
  elements:
6
6
  - { ref: REF01, id: '128', req: M }
7
7
  - { ref: REF02, id: '127', req: X }
8
+ - { ref: REF03, id: '352', req: X }
@@ -8,6 +8,10 @@ elements:
8
8
  - { ref: SAC03, id: '559', req: X }
9
9
  - { ref: SAC04, id: '1301', req: X }
10
10
  - { ref: SAC05, id: '610', req: O }
11
+ - { ref: SAC06, id: '378', req: X }
12
+ - { ref: SAC07, id: '322', req: X }
13
+ - { ref: SAC12, id: '311', req: O }
14
+ - { ref: SAC15, id: '352', req: X }
11
15
  notes: |
12
16
  1.R0203 - At least one of SAC02 or SAC03 is required.
13
17
  2.P0304 - If either SAC03 or SAC04 is present, then the other is required.
@@ -0,0 +1,7 @@
1
+ ---
2
+ id: SCH
3
+ name: Line Item Schedule
4
+ purpose: To specify the data for scheduling a specific line-item
5
+ elements:
6
+ - { ref: SCH01, id: '380', req: M }
7
+ - { ref: SCH03, id: '98', req: O }
@@ -0,0 +1,8 @@
1
+ ---
2
+ id: SDQ
3
+ name: Destination Quantity
4
+ purpose: To specify destination and quantity detail
5
+ elements:
6
+ - { ref: SDQ01, id: '355', req: M }
7
+ - { ref: SDQ02, id: '66', req: O }
8
+ - { ref: SDQ23, id: '310', req: O }
@@ -0,0 +1,9 @@
1
+ ---
2
+ id: TXI
3
+ name: Tax Information
4
+ purpose: To specify tax information.
5
+ elements:
6
+ - { ref: ACK01, id: '963', req: M }
7
+ - { ref: ACK02, id: '782', req: X }
8
+ - { ref: ACK03, id: '954', req: X }
9
+ - { ref: ACK09, id: '325', req: O }
@@ -0,0 +1,93 @@
1
+ ---
2
+ id: 810
3
+ functional_group: IN
4
+ name: Invoice
5
+ components:
6
+
7
+ - id: BIG
8
+ req: M
9
+ element_count: 5
10
+
11
+ - id: REF
12
+ req: O
13
+ element_count: 2
14
+
15
+ - loop_id: N1
16
+ repeat: 200
17
+ components:
18
+ - id: N1
19
+ req: O
20
+ max_use: 1
21
+ element_count: 3
22
+ elements:
23
+ - { ref: N101, id: '98', req: M }
24
+ - { ref: N103, id: '66', req: X }
25
+ - { ref: N104, id: '67', req: X }
26
+ - id: N3
27
+ req: O
28
+ max_use: 2
29
+ element_count: 2
30
+ elements:
31
+ - { ref: N301, id: '166', req: M }
32
+ - { ref: N302, id: '166', req: O }
33
+ - id: N4
34
+ req: O
35
+ max_use: 2
36
+ element_count: 3
37
+ elements:
38
+ - { ref: N401, id: '19', req: O }
39
+ - { ref: N402, id: '156', req: O }
40
+ - { ref: N403, id: '116', req: O }
41
+
42
+ - id: DTM
43
+ req: O
44
+ element_count: 2
45
+ elements:
46
+ - { ref: DTM01, id: '374', req: M }
47
+ - { ref: DTM02, id: '373', req: X }
48
+
49
+ - loop_id: IT1
50
+ repeat: 200000
51
+ components:
52
+ - id: IT1
53
+ req: O
54
+ element_count: 14
55
+ - id: CTP
56
+ req: O
57
+ element_count: 6
58
+ - loop_id: PID
59
+ repeat: 1000
60
+ req: M
61
+ components:
62
+ - id: PID
63
+ req: O
64
+ element_count: 2
65
+ - loop_id: SAC
66
+ repeat: 25
67
+ req: O
68
+ components:
69
+ - id: SAC
70
+ req: O
71
+ element_count: 3
72
+
73
+ - id: TDS
74
+ req: M
75
+ element_count: 1
76
+
77
+ - id: CAD
78
+ req: O
79
+ element_count: 1
80
+
81
+ - loop_id: SAC
82
+ repeat: 25
83
+ req: O
84
+ components:
85
+ - id: SAC
86
+ req: O
87
+ element_count: 3
88
+
89
+ - id: CTT
90
+ req: O
91
+ element_count: 1
92
+ elements:
93
+ - { ref: CTT01, id: '354', req: M }
@@ -0,0 +1,57 @@
1
+ ---
2
+ id: 846
3
+ functional_group: IB
4
+ name: Inventory Inquiry/Advice
5
+ components:
6
+ - { id: BIA, req: M, max_use: 1 }
7
+ - { id: CUR, req: O, max_use: 1 }
8
+ - { id: DTM, req: O, max_use: 10 }
9
+ - { id: REF, req: O, max_use: 12 }
10
+ - { id: PER, req: O, max_use: 3 }
11
+ - loop_id: N1
12
+ repeat: 5
13
+ components:
14
+ - { id: N1, req: O, max_use: 1 }
15
+ - { id: N2, req: O, max_use: 2 }
16
+ - { id: N3, req: O, max_use: 2 }
17
+ - { id: N4, req: O, max_use: 1 }
18
+ - { id: REF, req: O, max_use: 12 }
19
+ - { id: PER, req: O, max_use: 3 }
20
+ - loop_id: LIN
21
+ repeat: 10000
22
+ components:
23
+ - { id: LIN, req: M, max_use: 1 }
24
+ - { id: PID, req: O, max_use: 200 }
25
+ - { id: DTM, req: O, max_use: 10 }
26
+ - { id: CTP, req: O, max_use: 25 }
27
+ - { id: REF, req: O, usage: must_use }
28
+ - { id: SDQ, req: O, max_use: 500 }
29
+ - loop_id: SLN
30
+ repeat: 1000
31
+ components:
32
+ - { id: SLN, req: O, max_use: 1 }
33
+ - { id: PID, req: O, max_use: 200 }
34
+ - loop_id: QTY
35
+ repeat: 99
36
+ components:
37
+ - { id: QTY, req: O, max_use: 1 }
38
+ - { id: DTM, req: O, max_use: 10 }
39
+ - loop_id: SCH
40
+ repeat: 25
41
+ components:
42
+ - { id: QTY, req: O, max_use: 1 }
43
+ - { id: DTM, req: O, max_use: 10 }
44
+ - loop_id: N1
45
+ repeat: 200
46
+ components:
47
+ - { id: N1, req: O, max_use: 1 }
48
+ - { id: N2, req: O, max_use: 2 }
49
+ - { id: N3, req: O, max_use: 2 }
50
+ - { id: N4, req: O, max_use: 1 }
51
+ - { id: REF, req: O, max_use: 12 }
52
+ - { id: PER, req: O, max_use: 3 }
53
+ - id: CTT
54
+ req: O
55
+ elements:
56
+ - { ref: CTT01, id: '354', req: M }
57
+ - { ref: CTT02, id: '347', req: O }