File Coverage

blib/lib/XML/ASCX12/Segments.pm
Criterion Covered Total %
statement 9 9 100.0
branch n/a
condition n/a
subroutine 3 3 100.0
pod n/a
total 12 12 100.0


line stmt bran cond sub pod time code
1             #
2             # $Id: Segments.pm,v 1.5 2004/08/25 21:49:38 brian.kaney Exp $
3             #
4             # XML::ASCX12::Segments
5             #
6             # Copyright (c) Vermonster LLC
7             #
8             # This library is free software; you can redistribute it and/or
9             # modify it under the terms of the GNU Lesser General Public
10             # License as published by the Free Software Foundation; either
11             # version 2.1 of the License, or (at your option) any later version.
12             #
13             # This library is distributed in the hope that it will be useful,
14             # but WITHOUT ANY WARRANTY; without even the implied warranty of
15             # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16             # Lesser General Public License for more details.
17             #
18             # For questions, comments, contributions and/or commercial support
19             # please contact:
20             #
21             # Vermonster LLC
22             # 312 Stuart St. 2nd Floor
23             # Boston, MA 02116 US
24             #
25             # vim: set expandtab tabstop=4 shiftwidth=4
26             #
27              
28             =head1 NAME
29              
30             XML::ASCX12::Segments - Segment *and* Element Definitions for ASCX12 EDI Data
31              
32             =cut
33             package XML::ASCX12::Segments;
34              
35 1     1   9 use Carp qw(croak);
  1         3  
  1         82  
36 1     1   6 use vars qw(@ISA @EXPORT $VERSION $SEGMENTS $ELEMENTS);
  1         2  
  1         309  
37              
38             BEGIN
39             {
40 1     1   22 @ISA = ('Exporter');
41 1         2 @EXPORT = qw($SEGMENTS $ELEMENTS);
42 1         1825 $VERSION = '0.1';
43             }
44              
45             =head1 DESCRIPTION
46              
47             The name is a bit of a misnomer, this file contains both the ASCX12
48             segments and elements. Segmentsandelements.pm seemed like too long
49             of a name.
50              
51             =head1 PUBLIC STATIC VARIABLES
52              
53             =over 4
54              
55             =item $SEGMENTS
56              
57              
58             This is the segments found in each catalog. If you add more segments, please
59             submit your changes to the author so we can keep this project growing.
60              
61             =cut
62             $SEGMENTS = {
63             # CODE => [Description, (M)andatory|(O)ptional, MxUse, LoopID, LoopRepeat]
64             'ISA' => ['Interchange Control Header', 'M', 1, 'ISA', 0]
65             ,'IEA' => ['Interchange Control Trailer', 'M', 1, 'ISA', 0]
66             ,'GS' => ['Functional Group Header', 'M', 1, 'GS', 0]
67             ,'GE' => ['Functional Group Trailer', 'M', 1, 'GS', 0]
68             ,'ST' => ['Transaction Set Header', 'M', 1, 'ST', 0]
69             ,'SE' => ['Transaction Set Trailer', 'M', 1, 'ST', 0]
70              
71             #
72             # This is Catalog 110 Specific
73             #
74             ,'B3' => ['Beg Seg for Carriers Invoice', 'M', 1, 'ST', 0]
75             ,'B3A' => ['Invoice Type', 'O', 1, 'ST', 0]
76             ,'ITD' => ['Invoice Type Deferred Terms of Sale', 'O', 1, 'ST', 0]
77             ,'N1' => ['Name', 'O', 1, 'N1', 3]
78             ,'N2' => ['Additional Name Information', 'O', 1, 'N1', 2]
79             ,'N3' => ['Address Information', 'O', 2, 'N1', 0]
80             ,'N4' => ['Geographic Information', 'O', 1, 'N1', 0]
81             ,'N5' => ['Address Information', 'O', 2, 'N1', 0]
82             ,'N9' => ['Reference Number', 'O', 10, 'N1', 0]
83             ,'LX' => ['Sequential Number', 'M', 1, 'LX', 9999]
84             ,'P1' => ['Pickup', 'O', 1, 'LX', 0]
85             ,'R1' => ['Route Information (Air)', 'O', 1, 'LX', 0]
86             ,'POD' => ['Proof of Delivery (POD)', 'O', 1, 'LX', 0]
87             ,'V9' => ['Event Detail', 'O', 1, 'LX', 0]
88             ,'RMT' => ['Remittance Advice', 'O', 10, 'LX', 0]
89             ,'NTE' => ['Note/Special Instruction', 'O', 10, 'LX', 0]
90             ,'L5' => ['Line Item Description', 'M', 1, 'L5', 4]
91             ,'L0' => ['Line Item/Qty and Wt', 'O', 1, 'L5', 0]
92             ,'L4' => ['Measurement', 'O', 4, 'L5', 0]
93             ,'L10' => ['Weight', 'O', 4, 'L5', 0]
94             ,'SL1' => ['Tariff Reference', 'O', 1, 'L5', 0]
95             ,'L1' => ['Rates and Charges', 'O', 1, 'L1', 30]
96             ,'L3' => ['Total Weight and Charges', 'M', 1, 'ST', 0]
97              
98             #
99             # This is Catalog 997 Specific
100             #
101             ,'AK1' => ['Functional Identifier Code', 'M', 1, 'ST', 0]
102             ,'AK2' => ['Transaction Set Response Header', 'O', 1, 'AK2', 9999]
103             ,'AK3' => ['Data Segment Note', 'O', 1, 'AK3', 9999]
104             ,'AK4' => ['Data Element Notice', 'O', 99, 'AK3', 9999]
105             ,'AK5' => ['Transaction Set Response Trailer', 'M', 1, 'AK2', 9999]
106             ,'AK9' => ['Functional Group Response Header', 'M', 1, 'ST', 0]
107              
108             #
109             # This is Catalog 175 Specific
110             #
111             ,'BGN' => ['Beginning Segment', 'M', 1, 'ST', 0]
112             ,'CDS' => ['Case Description', 'M', 1, 'CDS', 0]
113             ,'LS' => ['Start of CED loops', 'M', 1, 'CDS', 0]
114             ,'CED' => ['Case Event of Notice Information', 'M', 1, 'CED', 9999]
115             ,'DTM' => ['Date/Time Information', 'O', 2, 'CED', 9999]
116             ,'REF' => ['Reference Numbers', 'O', 3, 'CED', 9999]
117             ,'MSG' => ['Free-form Information', 'O', 9999, 'CED', 9999]
118             ,'LM' => ['Indicates that US Court Codes are to follow','O', 1, 'LM', 9999]
119             ,'LQ' => ['Court code associated with particular event','M', 2, 'LM', 9999]
120             ,'NM1' => ['Name and type of entity', 'M', 1, 'NM1', 9999]
121             ,'N2' => ['Continuation of NM103 name', 'O', 9999, 'NM1', 9999]
122             ,'N3' => ['Address', 'O', 4,'NM1', 9999]
123             ,'N4' => ['City, state and zip code', 'O', 1,'NM1', 9999]
124             ,'REF' => ['Reference Numbers', 'O', 3,'NM1', 9999]
125             ,'PER' => ['Telephone Number', 'O', 1,'NM1', 9999]
126             ,'LE' => ['End of CED loops', 'M', 1, 'CDS', 0]
127             };
128              
129             =item $ELEMENTS
130              
131              
132             These are the elements found within each segment. If you add more elements, please
133             submit your changes to the author so we can keep this project growing.
134              
135             =cut
136             $ELEMENTS = {
137             # CODE => [Description, (M)andatory|(O)ptional, Type, Min, Max]
138             'ISA01' => ['Authorization Information Qualifier', 'M', 'ID', 2, 2]
139             ,'ISA02' => ['Authorization Information', 'M', 'AN', 10, 10]
140             ,'ISA03' => ['Security Information Qualifier', 'M', 'ID', 2, 2]
141             ,'ISA04' => ['Security Information', 'M', 'AN', 10, 10,]
142             ,'ISA05' => ['Interchange ID Qualifier', 'M', 'ID', 2, 2]
143             ,'ISA06' => ['Interchange Sender ID', 'M', 'AN', 15, 15]
144             ,'ISA07' => ['Interchange ID Qualifier', 'M', 'ID', 2, 2]
145             ,'ISA08' => ['Interchange Receiver ID', 'M', 'AN', 15, 15]
146             ,'ISA09' => ['Interchange Date', 'M', 'DT', 6, 6]
147             ,'ISA10' => ['Interchange Time', 'M', 'TM', 4, 4]
148             ,'ISA11' => ['Interchange Cntrl Standards ID', 'M', 'ID', 1, 1]
149             ,'ISA12' => ['ISA Control Version Number', 'M', 'ID', 5, 5]
150             ,'ISA13' => ['Interchange Control Number', 'M', 'NO', 9, 9]
151             ,'ISA14' => ['ACK Requested', 'M', 'ID', 1, 1]
152             ,'ISA15' => ['Usage Indicator', 'M', 'ID', 1, 1]
153             ,'ISA16' => ['Component Element Separator', 'M', 'ID', 1, 1]
154             ,'GS01' => ['Functional ID Code', , 'M', 'ID', 2, 2]
155             ,'GS02' => ['Application Sender Code', 'M', 'AN', 2, 15]
156             ,'GS03' => ['Application Receiver Code', 'M', 'AN', 2, 15]
157             ,'GS04' => ['Date', 'M', 'DT', 8, 8]
158             ,'GS05' => ['Time', 'M', 'TM', 4, 8]
159             ,'GS06' => ['Group Control Number', 'M', 'NO', 1, 9]
160             ,'GS07' => ['Responsible Agency Code', 'M', 'ID', 1, 2]
161             ,'GS08' => ['Version/Release ID Code', 'M', 'AN', 1, 12]
162             ,'ST01' => ['Transaction Set Identifier Code', 'M', 'ID', 3, 3]
163             ,'ST02' => ['Transaction Set Control Number', 'M', 'AN', 4, 9]
164             ,'B302' => ['Invoice Number', 'M', 'AN', 1, 22]
165             ,'B304' => ['Shipment Method of Payment', 'M', 'ID', 2, 2]
166             ,'B306' => ['Billing Date', 'M', 'DT', 8, 8]
167             ,'B307' => ['Net Amount Due', 'M', 'N2', 1, 12]
168             ,'B308' => ['Invoice Type', 'O', 'ID', 2, 2]
169             ,'B311' => ['SCAC', 'M', 'ID', 2, 4]
170             ,'B312' => ['Billing Date', 'O', 'DT', 8, 8]
171             ,'B313' => ['Settlement Option', 'O', 'ID', 2, 2]
172             ,'B3A01' => ['Transaction Type Codes', 'M', 'ID', 2, 2]
173             ,'B3A02' => ['Number of Transactions', 'O', 'N0', 1, 5]
174             ,'ITD01' => ['Terms Type Code', 'O', 'ID', 2, 2]
175             ,'ITD02' => ['Terms Basis Date Code', 'O', 'ID', 1, 2]
176             ,'ITD07' => ['Terms Net Days', 'O', 'N0', 1, 3]
177             ,'N101' => ['Entity Identifier Code', 'M', 'ID', 2, 3]
178             ,'N102' => ['Name', 'X', 'AN', 1, 60]
179             ,'N201' => ['Name', 'M', 'AN', 1, 60]
180             ,'N301' => ['Address', 'M', 'AN', 1, 55]
181             ,'N302' => ['Address', 'O', 'AN', 1, 55]
182             ,'N401' => ['City Name', 'O', 'AN', 2, 30]
183             ,'N402' => ['State/Province Code', 'O', 'ID', 2, 2]
184             ,'N403' => ['Postal Code', 'O', 'ID', 3, 15]
185             ,'N404' => ['Country Code', 'O', 'ID', 2, 3]
186             ,'N901' => ['Reference Identification Qualifier', 'M', 'ID', 2, 3]
187             ,'N902' => ['Reference Identification', 'X', 'AN', 1, 30]
188             ,'N903' => ['Free-Form Description', 'X', 'AN', 1, 45]
189             ,'LX01' => ['Assigned Number', 'M', 'N0', 1, 6]
190             ,'P101' => ['Pickup or Delivery Code', 'O', 'ID', 1, 2]
191             ,'P102' => ['Pickup Date', 'M', 'DT', 8, 8]
192             ,'P103' => ['Date/Time Qualifier', 'M', 'ID', 3, 3]
193             ,'R101' => ['SCAC', 'O', 'ID', 2, 4]
194             ,'R103' => ['Airport Code', 'M', 'ID', 3, 5]
195             ,'R104' => ['Air Carrier Code', 'M', 'ID', 3, 3]
196             ,'R105' => ['Airport Code', 'M', 'ID', 3, 5]
197             ,'POD01' => ['Date', 'M', 'DT', 8, 8]
198             ,'POD02' => ['Time', 'O', 'TM', 4, 8]
199             ,'POD03' => ['Name', 'M', 'AN', 1, 60]
200             ,'V901' => ['Event Code', 'M', 'ID', 3, 3]
201             ,'V902' => ['Event', 'O', 'AN', 1, 25]
202             ,'V903' => ['Event Date (Used to validate on-time delivery)', 'O', 'DT', 8, 8]
203             ,'V904' => ['Event Time (Used to validate on-time delivery)', 'X/Z', 'TM', 4, 8]
204             ,'V908' => ['Status Reason Code (Used to validate on-time delivery)', 'O', 'ID', 3, 3]
205             ,'V912' => ['Free-Form Message', 'O', 'AN', 1, 30]
206             ,'RMT01' => ['Reference Identification Qualifier', 'M', 'ID', 2, 3]
207             ,'RMT02' => ['Reference Identification', 'M', 'AN', 1, 30]
208             ,'RMT03' => ['Monetary Amount', 'O', 'R', 1, 18]
209             ,'RMT06' => ['Monetary Amount', 'O', 'R', 1, 18]
210             ,'RMT08' => ['Monetary Amount', 'O', 'R', 1, 18]
211             ,'RMT01' => ['Reference Identification Qualifier', 'M', 'ID', 2, 3]
212             ,'RMT02' => ['Reference Identification', 'M', 'AN', 1, 30]
213             ,'NTE01' => ['Note Reference Code', 'O', 'ID', 3, 3]
214             ,'NTE02' => ['Free-Form Message', 'M', 'AN', 1, 80]
215             ,'L501' => ['Lading Line Item Number', 'O', 'N0', 1, 3]
216             ,'L502' => ['Lading Description', 'O', 'AN', 1, 50]
217             ,'L503' => ['Commodity Code', 'X', 'AN', 1, 30]
218             ,'L504' => ['Commodity Code Qualifier', 'X', 'ID', 1, 1]
219             ,'L505' => ['Packaging Code', 'O', 'AN', 3, 5]
220             ,'L001' => ['Lading Line Item Number', 'O', 'N0', 1, 3]
221             ,'L004' => ['Weight', 'X', 'R', 1, 10]
222             ,'L005' => ['Weight Qualifier', 'X', 'ID', 1, 2]
223             ,'L008' => ['Lading Quantity', 'X/Z', 'N0', 1, 7]
224             ,'L009' => ['Packaging Form Code', 'X', 'ID', 3, 3]
225             ,'L011' => ['Weight Unit Code', 'O', 'ID', 1, 1]
226             ,'L013' => ['Charge Count', 'X/Z', 'R', 1, 15]
227             ,'L015' => ['Charge Count Qualifier', 'X', 'ID', 1, 1]
228             ,'L1001' => ['Weight', 'M', 'R', 1, 10]
229             ,'L1002' => ['Weight Qualifier', 'M', 'ID', 1, 2]
230             ,'L1003' => ['Weight Unit Qualifier', 'O', 'ID', 1, 1]
231             ,'SL101' => ['Service Base Code', 'M', 'ID', 2, 2]
232             ,'SL102' => ['Tariff Number', 'O', 'AN', 1, 7]
233             ,'SL103' => ['Commodity Code', 'X', 'AN', 1, 30]
234             ,'SL104' => ['Scale', 'X', 'AN', 1, 10]
235             ,'SL106' => ['Service Level Code', 'O', 'ID', 2, 2]
236             ,'SL107' => ['Shipment Method of Payment', 'O', 'ID', 2, 2]
237             ,'SL108' => ['Data Source Code', 'O', 'ID', 2, 2]
238             ,'SL109' => ['International/Intra-U.S. Code', 'O', 'ID', 1, 1]
239             ,'L104' => ['Charge', 'X', 'N2', 1, 12]
240             ,'L108' => ['Special Charge Code', 'O', 'ID', 3, 3]
241             ,'L109' => ['Rate Class Code', 'O', 'ID', 1, 3]
242             ,'L112' => ['Special Charge Description', 'O', 'AN', 2, 25]
243             ,'L114' => ['Declared Value', 'X', 'N2', 2, 12]
244             ,'L115' => ['Rate/Value Qualifier', 'X', 'ID', 2, 2]
245             ,'L119' => ['Percent', 'O', 'R', 1, 10]
246             ,'L120' => ['Currency Code', 'O', 'ID', 3, 3]
247             ,'L121' => ['Amount', 'O', 'N2', 1, 15]
248             ,'L305' => ['Charge', 'O', 'N2', 1, 12]
249             ,'L308' => ['Special Charge or Allowance Code', 'O', 'ID', 3, 3]
250             ,'SE01' => ['Number of Included Segments', 'M', 'N0', 1, 10]
251             ,'SE02' => ['Transaction Set Control Number', 'M', 'AN', 4, 9]
252             ,'GE01' => ['Number of Transaction Sets Included', 'M', 'NO', 1, 6]
253             ,'GE02' => ['Group Control Number', 'M', 'NO', 1, 9]
254             ,'IEA01' => ['Number of Included functional Group', 'M', 'NO', 1, 5]
255             ,'IEA02' => ['Interchange Control Number', 'M', 'NO', 9, 9]
256              
257             #
258             # This is Catalog 175 Specific
259             #
260             ,'BGN01' => ['Transaction Set Purpose Code', 'M', 'ID', 2, 2]
261             ,'BGN02' => ['Reference Number', 'M', 'AN', 1, 30]
262             ,'BGN03' => ['Date', 'M', 'DT', 6, 6]
263             ,'CDS01' => ['Case Type Code', 'M', 'ID', 1, 2]
264             ,'CDS02' => ['Court Type Code', 'M', 'ID', 1, 2]
265             ,'CDS03' => ['Reference Number Qualifier', 'O', 'ID', 2, 2]
266             ,'CDS04' => ['Reference Number', 'M', 'AN', 1, 30]
267             ,'CDS05' => ['Description', 'O', 'AN', 1, 80]
268             ,'CDS06' => ['Identification Code Qualifier', 'M', 'ID', 1, 2]
269             ,'CDS07' => ['Identification Code', 'M', 'ID', 2, 20]
270             ,'CDS08' => ['Identification Code Qualifier', 'M', 'ID', 1, 2]
271             ,'CDS09' => ['Identification Code', 'M', 'ID', 2, 20]
272             ,'LS01' => ['Loop Identifier Code', 'M', 'ID', 1, 4]
273             ,'CED01' => ['Court Event Type Code', 'M', 'ID', 1, 3]
274             ,'CED02' => ['Action Code', 'O', 'ID', 1, 2]
275             ,'CED03' => ['Notice Type Code', 'O', 'ID', 1, 3]
276             ,'CED04' => ['Case Type Code', 'O', 'ID', 1, 2]
277             ,'DTM01' => ['Date/Time Qualifier', 'M', 'ID', 3, 3]
278             ,'DTM02' => ['Date', 'M', 'DT', 6, 6]
279             ,'DTM03' => ['Time', 'O', 'TM', 4, 6]
280             ,'CDS01' => ['Case Type Code', 'M', 'ID', 1, 2]
281             ,'CDS02' => ['Court Type Code', 'M', 'ID', 1, 2]
282             ,'CDS03' => ['Reference Number Qualifier', 'O', 'ID', 2, 2]
283             ,'CDS04' => ['Reference Number', 'M', 'AN', 1, 30]
284             ,'CDS05' => ['Description', 'O', 'AN', 1, 80]
285             ,'MSG01' => ['Free-Form Message Text', 'M', 'AN', 1, 264]
286             ,'LM01' => ['Agency Qualifier Code', 'M', 'ID', 2, 2]
287             ,'LQ01' => ['Code List Qualifier Code', 'M', 'ID', 1, 3]
288             ,'LQ02' => ['Industry Code', 'M', 'AN', 1, 20]
289             ,'NM101' => ['Entity Identifier Code', 'M', 'ID', 2, 2]
290             ,'NM102' => ['Entity Type Qualifier', 'M', 'ID', 1, 1]
291             ,'NM103' => ['Last Name or Organization Name', 'O', 'AN', 1, 35]
292             ,'NM104' => ['First Name', 'O', 'AN', 1, 25]
293             ,'NM105' => ['Middle Name', , 'O', 'AN', 1, 25]
294             ,'NM106' => ['Name Prefix', 'O', 'AN', 1, 10]
295             ,'NM107' => ['Name Suffix', 'O', 'AN', 1, 10]
296             ,'NM108' => ['Identification Code Qualifier', 'O', 'ID', 1, 2]
297             ,'NM109' => ['Identification Code', 'C', 'AN', 1, 20]
298             ,'NM110' => ['Entity Relationship Code', 'C', 'ID', 2, 2]
299             ,'NM111' => ['Entity Identifier Code', 'O', 'ID', 2, 2]
300             ,'N201' => ['Name', 'M', 'AN', 1, 35]
301             ,'N202' => ['Name', 'O', 'AN', 1, 35]
302             ,'N301' => ['Address Information', 'M', 'AN', 1, 35]
303             ,'N302' => ['Address Information', 'O', 'AN', 1, 35]
304             ,'N401' => ['City Name', 'O', 'AN', 2, 30]
305             ,'N402' => ['State or Province Code', 'O', 'ID', 2, 2]
306             ,'N403' => ['Postal Code', 'O', 'ID', 3, 11]
307             ,'N404' => ['Country Code', 'O', 'ID', 2, 3]
308             ,'REF01' => ['Reference Number Qualifier', 'M', 'ID', 2, 35]
309             ,'REF02' => ['Reference Number', 'M', 'AN', 1, 30]
310             ,'PER01' => ['Contact Function Code', 'M', 'ID', 2, 2]
311             ,'PER02' => ['Name', 'NU', 'AN', 1, 35]
312             ,'PER03' => ['Communications Number Qualifier', 'M', 'ID', 2, 2]
313             ,'PER04' => ['Communications Number', 'M', 'ID', 1, 80]
314             ,'LE01' => ['Loop Identifier Code', 'M', 'ID', 1, 4]
315             ,'SE01' => ['Transaction Set Identifier Code', 'M', 'N0', 1, 10]
316             ,'SE02' => ['Transaction Set Control Number', 'M', 'AN', 4, 9]
317             };
318              
319             =back
320              
321             =head1 AUTHORS
322              
323             Brian Kaney >, Jay Powers >
324              
325             L
326              
327             Copyright (c) 2004 Vermonster LLC. All rights reserved.
328              
329             This library is free software. You can redistribute it and/or modify
330             it under the terms of the GNU Lesser General Public License as
331             published by the Free Software Foundation; either version 2 of the
332             License, or (at your option) any later version.
333              
334             Basically you may use this library in commercial or non-commercial applications.
335             However, If you make any changes directly to any files in this library, you are
336             obligated to submit your modifications back to the authors and/or copyright holder.
337             If the modification is suitable, it will be added to the library and released to
338             the back to public. This way we can all benefit from each other's hard work!
339              
340             If you have any questions, comments or suggestions please contact the author.
341              
342             =head1 SEE ALSO
343              
344             L and L
345              
346             =cut
347             1;