Skip to main content

x12_types/v005010/segment/
g.rs

1use serde::{Deserialize, Serialize};
2use validator::Validate;
3use x12_types_macros::{DisplaySegment, ParseSegment};
4
5/// GE - Functional Group Trailer
6#[derive(
7    Serialize,
8    Deserialize,
9    Clone,
10    Default,
11    Debug,
12    Validate,
13    PartialEq,
14    Eq,
15    DisplaySegment,
16    ParseSegment,
17)]
18pub struct GE {
19    #[serde(rename = "01")]
20    pub _01: String,
21    #[serde(rename = "02")]
22    pub _02: String,
23}
24
25/// GRI - Statistical Government Information
26///
27/// To convey statistical or government-required reporting data
28///
29/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
30/// ----|----|-------|--------|----|------|-------
31/// 01 | 1260 | Reported Data ID Code | 1 | M | AN | 1/6
32/// 02 | 1261 | Reported Data Response | 1 | X | AN | 1/10
33/// 03 | 673 | Quantity Qualifier | 1 | O | ID | 2/2
34/// 04 | 380 | Quantity | 1 | X | R | 1/15
35/// 05 | 522 | Amount Qualifier Code | 1 | O | ID | 1/3
36/// 06 | 782 | Monetary Amount | 1 | X | R | 1/18
37/// 07 | 1004 | Percent Qualifier | 1 | O | ID | 1/2
38/// 08 | 488 | Percent, Integer Format | 1 | X | N0 | 1/3
39/// 09 | 374 | Date/Time Qualifier | 1 | O | ID | 3/3
40/// 10 | 373 | Date | 1 | X | DT | 8/8
41/// 11 | 352 | Description | 1 | O | AN | 1/80
42#[derive(
43    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
44)]
45pub struct GRI {
46    #[serde(rename = "01")]
47    pub _01: String,
48    #[serde(rename = "02")]
49    pub _02: Option<String>,
50    #[serde(rename = "03")]
51    pub _03: Option<String>,
52    #[serde(rename = "04")]
53    pub _04: Option<String>,
54    #[serde(rename = "05")]
55    pub _05: Option<String>,
56    #[serde(rename = "06")]
57    pub _06: Option<crate::v005010::element::E782>,
58    #[serde(rename = "07")]
59    pub _07: Option<crate::v005010::element::E1004>,
60    #[serde(rename = "08")]
61    pub _08: Option<crate::v005010::element::E488>,
62    #[serde(rename = "09")]
63    pub _09: Option<String>,
64    #[serde(rename = "10")]
65    pub _10: Option<String>,
66    #[serde(rename = "11")]
67    pub _11: Option<String>,
68}
69
70/// GS - FunctionalGroup Header
71#[derive(
72    Serialize,
73    Deserialize,
74    Clone,
75    Default,
76    Debug,
77    Validate,
78    PartialEq,
79    Eq,
80    DisplaySegment,
81    ParseSegment,
82)]
83pub struct GS {
84    #[serde(rename = "01")]
85    pub _01: String,
86    #[serde(rename = "02")]
87    pub _02: String,
88    #[serde(rename = "03")]
89    pub _03: String,
90    #[serde(rename = "04")]
91    pub _04: String,
92    #[serde(rename = "05")]
93    pub _05: String,
94    #[serde(rename = "06")]
95    pub _06: String,
96    #[serde(rename = "07")]
97    pub _07: String,
98    #[serde(rename = "08")]
99    pub _08: String,
100}
101
102/// G53 - Maintenance Type
103#[derive(
104    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
105)]
106pub struct G53 {
107    #[serde(rename = "01")]
108    pub _01: Option<String>,
109    #[serde(rename = "02")]
110    pub _02: Option<String>,
111    #[serde(rename = "03")]
112    pub _03: Option<String>,
113    #[serde(rename = "04")]
114    pub _04: Option<String>,
115    #[serde(rename = "05")]
116    pub _05: Option<String>,
117    #[serde(rename = "06")]
118    pub _06: Option<String>,
119    #[serde(rename = "07")]
120    pub _07: Option<String>,
121    #[serde(rename = "08")]
122    pub _08: Option<String>,
123    #[serde(rename = "09")]
124    pub _09: Option<String>,
125    #[serde(rename = "10")]
126    pub _10: Option<String>,
127    #[serde(rename = "11")]
128    pub _11: Option<String>,
129    #[serde(rename = "12")]
130    pub _12: Option<String>,
131    #[serde(rename = "13")]
132    pub _13: Option<String>,
133    #[serde(rename = "14")]
134    pub _14: Option<String>,
135    #[serde(rename = "15")]
136    pub _15: Option<String>,
137    #[serde(rename = "16")]
138    pub _16: Option<String>,
139    #[serde(rename = "17")]
140    pub _17: Option<String>,
141    #[serde(rename = "18")]
142    pub _18: Option<String>,
143    #[serde(rename = "19")]
144    pub _19: Option<String>,
145    #[serde(rename = "20")]
146    pub _20: Option<String>,
147    #[serde(rename = "21")]
148    pub _21: Option<String>,
149    #[serde(rename = "22")]
150    pub _22: Option<String>,
151    #[serde(rename = "23")]
152    pub _23: Option<String>,
153    #[serde(rename = "24")]
154    pub _24: Option<String>,
155    #[serde(rename = "25")]
156    pub _25: Option<String>,
157}
158
159/// G61 - Contact
160///
161/// To identify a person or office to whom communications should be directed
162///
163/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
164/// ----|----|------|--------|----|------|-------
165/// 01 | 366 | Contact Function Code | 1 | M | ID | 2/2
166/// 02 | 93 | Name | 1 | M | AN | 1/60
167/// 03 | 365 | Communication Number Qualifier | 1 | X | ID | 2/2
168/// 04 | 364 | Communication Number | 1 | X | AN | 1/80
169/// 05 | 443 | Contact Inquiry Reference | 1 | O | AN | 1/20
170#[derive(
171    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
172)]
173pub struct G61 {
174    #[serde(rename = "01")]
175    pub _01: String,
176    /// 93 - Name
177    ///
178    /// Free-form name
179    /// - TYPE=AN
180    /// - MIN=1
181    /// - MAX=60
182    #[serde(rename = "02")]
183    pub _02: String,
184    #[serde(rename = "03")]
185    pub _03: Option<String>,
186    #[serde(rename = "04")]
187    pub _04: Option<String>,
188    #[serde(rename = "05")]
189    pub _05: Option<String>,
190}
191
192/// G62 - Date/Time
193///
194/// To specify pertinent dates and times
195///
196/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
197/// ----|----|------|--------|----|------|-------
198/// 01 | 432 | Date Qualifier | 1 | X | ID | 2/2
199/// 02 | 373 | Date | 1 | X | DT | 8/8
200/// 03 | 176 | Time Qualifier | 1 | X | ID | 1/2
201/// 04 | 337 | Time | 1 | X | TM | 4/8
202/// 05 | 623 | Time Code | 1 | O | ID | 2/2
203#[derive(
204    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
205)]
206pub struct G62 {
207    /// 432 - Date Qualifier
208    #[serde(rename = "01")]
209    pub _01: Option<crate::v005010::element::E432>,
210    /// 373 - Date
211    #[serde(rename = "02")]
212    pub _02: Option<crate::v005010::element::E373>,
213    /// 176 - Time Qualifier
214    #[serde(rename = "03")]
215    pub _03: Option<crate::v005010::element::E176>,
216    /// 337 - Time
217    #[serde(rename = "04")]
218    pub _04: Option<crate::v005010::element::E337>,
219    /// 623 - Time Code
220    ///
221    /// Code identifying the time. In accordance with International Standards Organization standard 8601, time can be specified by a + or - and an indication in hours in relation to Universal Time Coordinate (UTC) time; since + is a restricted character, + and - are substituted by P and M in the codes that follow
222    /// - TYPE=ID
223    /// - MIN=2
224    /// - MAX=2
225    #[serde(rename = "05")]
226    pub _05: Option<crate::v005010::element::E623>,
227}
228
229/// G66 - Transportation Instructions
230///
231/// To specify transportation instructions relating to shipment
232#[derive(
233    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
234)]
235pub struct G66 {
236    #[serde(rename = "01")]
237    pub _01: String,
238    #[serde(rename = "02")]
239    pub _02: Option<String>,
240    #[serde(rename = "03")]
241    pub _03: Option<String>,
242    #[serde(rename = "04")]
243    pub _04: Option<String>,
244    #[serde(rename = "05")]
245    pub _05: Option<String>,
246    #[serde(rename = "06")]
247    pub _06: Option<String>,
248    #[serde(rename = "07")]
249    pub _07: Option<String>,
250}
251
252/// G69 - Line Item Detail - Description
253///
254/// To describe an item in industry terminology
255#[derive(
256    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
257)]
258pub struct G69 {
259    #[serde(rename = "01")]
260    pub _01: String,
261}
262
263/// G95 - Performance Requirements
264///
265/// To specify the performance requirements associated with a promotion
266///
267/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
268/// ----|----|-------|--------|----|------|-------
269/// 01 | 293 | Promotion Condition Qualifier | 1 | O | ID | 2/2
270/// 02 | 422 | Promotion Condition Code | 1 | M | ID | 2/2
271/// 03 | 554 | Assigned Number | 1 | O | N0 | 1/6
272/// 04 | 380 | Quantity | 1 | X | R | 1/15
273/// 05 | 355 | Unit or Basis for Measurement Code | 1 | X | ID | 2/2
274/// 06 | 352 | Description | 1 | O | AN | 1/80
275/// 07 | 1470 | Number | 1 | O | N0 | 1/9
276#[derive(
277    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
278)]
279pub struct G95 {
280    #[serde(rename = "01")]
281    pub _01: Option<crate::v005010::element::E293>,
282    #[serde(rename = "02")]
283    pub _02: crate::v005010::element::E422,
284    #[serde(rename = "03")]
285    pub _03: Option<crate::v005010::element::E554>,
286    #[serde(rename = "04")]
287    pub _04: Option<String>,
288    #[serde(rename = "05")]
289    pub _05: Option<String>,
290    #[serde(rename = "06")]
291    pub _06: Option<String>,
292    #[serde(rename = "07")]
293    pub _07: Option<crate::v005010::element::E1470>,
294}
295
296/// G68 - Line Item Detail - Product
297///
298/// To specify item detail for a grocery product line item
299///
300/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
301/// ----|----|-------|--------|----|------|-------
302/// 01 | 380 | Quantity | 1 | M | R | 1/15
303/// 02 | 355 | Unit or Basis for Measurement Code | 1 | M | ID | 2/2
304/// 03 | 237 | Item List Cost | 1 | O | R | 1/9
305/// 04 | 438 | U.P.C. Case Code | 1 | X | AN | 12/12
306/// 05 | 235 | Product/Service ID Qualifier | 1 | X | ID | 2/2
307/// 06 | 234 | Product/Service ID | 1 | X | AN | 1/48
308/// 07 | 235 | Product/Service ID Qualifier | 1 | X | ID | 2/2
309/// 08 | 234 | Product/Service ID | 1 | X | AN | 1/48
310/// 09 | 417 | Price Bracket Identifier | 1 | O | AN | 1/3
311/// 10 | 258 | Quantity Cost | 1 | X | N | 1/9
312/// 11 | 355 | Unit or Basis for Measurement Code | 1 | X | ID | 2/2
313/// 12 | 439 | Price List Number | 1 | O | AN | 1/16
314/// 13 | 440 | Price List Issue Number | 1 | O | AN | 1/16
315/// 14 | 857 | Pre-Price Quantity Designator | 1 | O | N | 1/9
316/// 15 | 858 | Retail Pre-Price | 1 | O | R | 1/9
317#[derive(
318    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
319)]
320pub struct G68 {
321    #[serde(rename = "01")]
322    pub _01: String,
323    #[serde(rename = "02")]
324    pub _02: String,
325    #[serde(rename = "03")]
326    pub _03: Option<crate::v005010::element::E237>,
327    #[serde(rename = "04")]
328    pub _04: Option<String>,
329    #[serde(rename = "05")]
330    pub _05: Option<String>,
331    #[serde(rename = "06")]
332    pub _06: Option<String>,
333    #[serde(rename = "07")]
334    pub _07: Option<String>,
335    #[serde(rename = "08")]
336    pub _08: Option<String>,
337    #[serde(rename = "09")]
338    pub _09: Option<String>,
339    #[serde(rename = "10")]
340    pub _10: Option<crate::v005010::element::E258>,
341    #[serde(rename = "11")]
342    pub _11: Option<String>,
343    #[serde(rename = "12")]
344    pub _12: Option<String>,
345    #[serde(rename = "13")]
346    pub _13: Option<String>,
347    #[serde(rename = "14")]
348    pub _14: Option<crate::v005010::element::E857>,
349    #[serde(rename = "15")]
350    pub _15: Option<crate::v005010::element::E858>,
351}
352
353/// G70 - Line Item Detail - Miscellaneous
354///
355/// To specify miscellaneous line-item detail for a grocery product
356///
357/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
358/// ----|----|-------|--------|----|------|-------
359/// 01 | 356 | Pack | 1 | O | N0 | 1/6
360/// 02 | 357 | Size | 1 | X | R | 1/8
361/// 03 | 355 | Unit or Basis for Measurement Code | 1 | X | ID | 2/2
362/// 04 | 444 | Purchase Order Instruction Code | 1 | O | ID | 2/2
363/// 05 | 381 | Price Reason Code | 1 | O | ID | 1/1
364/// 06 | 445 | Terms Exception Code | 1 | O | ID | 2/2
365/// 07 | 441 | Tax Exempt Code | 1 | O | ID | 1/1
366/// 08 | 397 | Color | 1 | O | AN | 1/10
367/// 09 | 416 | Pallet Block and Tiers | 1 | O | N0 | 6/6
368/// 10 | 810 | Inner Pack | 1 | O | N0 | 1/6
369#[derive(
370    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
371)]
372pub struct G70 {
373    #[serde(rename = "01")]
374    pub _01: Option<crate::v005010::element::E356>,
375    #[serde(rename = "02")]
376    pub _02: Option<crate::v005010::element::E357>,
377    #[serde(rename = "03")]
378    pub _03: Option<String>,
379    #[serde(rename = "04")]
380    pub _04: Option<crate::v005010::element::E444>,
381    #[serde(rename = "05")]
382    pub _05: Option<crate::v005010::element::E381>,
383    #[serde(rename = "06")]
384    pub _06: Option<crate::v005010::element::E445>,
385    #[serde(rename = "07")]
386    pub _07: Option<crate::v005010::element::E441>,
387    #[serde(rename = "08")]
388    pub _08: Option<String>,
389    #[serde(rename = "09")]
390    pub _09: Option<crate::v005010::element::E416>,
391    #[serde(rename = "10")]
392    pub _10: Option<crate::v005010::element::E810>,
393}
394
395/// G73 - Allowance or Charge Description
396///
397/// To provide a free-form description of an allowance or charge
398///
399/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
400/// ----|----|-------|--------|----|------|-------
401/// 01 | 369 | Free-form Description | 1 | M | AN | 1/45
402#[derive(
403    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
404)]
405pub struct G73 {
406    #[serde(rename = "01")]
407    pub _01: String,
408}
409
410/// G76 - Total Purchase Order
411///
412/// To convey the totals for a grocery products purchase order
413///
414/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
415/// ----|----|-------|--------|----|------|-------
416/// 01 | 380 | Quantity | 1 | M | R | 1/15
417/// 02 | 355 | Unit or Basis for Measurement Code | 1 | M | ID | 2/2
418/// 03 | 81 | Weight | 1 | X | R | 1/10
419/// 04 | 355 | Unit or Basis for Measurement Code | 1 | X | ID | 2/2
420/// 05 | 183 | Volume | 1 | X | R | 1/8
421/// 06 | 355 | Unit or Basis for Measurement Code | 1 | X | ID | 2/2
422/// 07 | 398 | Order Sizing Factor | 1 | O | R | 1/10
423/// 08 | 610 | Amount | 1 | O | N2 | 1/15
424/// 09 | 417 | Price Bracket Identifier | 1 | O | AN | 1/3
425/// 10 | 107 | Payment Method Type Code | 1 | O | ID | 1/2
426#[derive(
427    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
428)]
429pub struct G76 {
430    #[serde(rename = "01")]
431    pub _01: String,
432    #[serde(rename = "02")]
433    pub _02: String,
434    #[serde(rename = "03")]
435    pub _03: Option<crate::v005010::element::E81>,
436    #[serde(rename = "04")]
437    pub _04: Option<String>,
438    #[serde(rename = "05")]
439    pub _05: Option<crate::v005010::element::E183>,
440    #[serde(rename = "06")]
441    pub _06: Option<String>,
442    #[serde(rename = "07")]
443    pub _07: Option<crate::v005010::element::E398>,
444    #[serde(rename = "08")]
445    pub _08: Option<crate::v005010::element::E610>,
446    #[serde(rename = "09")]
447    pub _09: Option<String>,
448    #[serde(rename = "10")]
449    pub _10: Option<crate::v005010::element::E107>,
450}
451
452/// G72 - Allowance or Charge
453///
454/// To specify allowances, charges, or services
455#[derive(
456    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
457)]
458pub struct G72 {
459    #[serde(rename = "01")]
460    pub _01: String,
461    #[serde(rename = "02")]
462    pub _02: String,
463    #[serde(rename = "03")]
464    pub _03: Option<String>,
465    #[serde(rename = "04")]
466    pub _04: Option<String>,
467    #[serde(rename = "05")]
468    pub _05: Option<String>,
469    #[serde(rename = "06")]
470    pub _06: Option<String>,
471    #[serde(rename = "07")]
472    pub _07: Option<String>,
473    #[serde(rename = "08")]
474    pub _08: Option<String>,
475    #[serde(rename = "09")]
476    pub _09: Option<String>,
477    #[serde(rename = "10")]
478    pub _10: Option<String>,
479    #[serde(rename = "11")]
480    pub _11: Option<String>,
481}
482
483/// G1 - Shipment Type Information
484///
485/// To indicate the basic shipment characteristics regarding the type of move
486///
487/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
488/// ----|----|-------|--------|----|------|-------
489/// 01 | 311 | Shipment Type Code | 1 | M | ID | 1/2
490/// 02 | 312 | Special Indicator Code | 1 | O | ID | 1/1
491/// 03 | 312 | Special Indicator Code | 1 | O | ID | 1/1
492#[derive(
493    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
494)]
495pub struct G1 {
496    #[serde(rename = "01")]
497    pub _01: crate::v005010::element::E311,
498    #[serde(rename = "02")]
499    pub _02: Option<crate::v005010::element::E312>,
500    #[serde(rename = "03")]
501    pub _03: Option<crate::v005010::element::E312>,
502}
503
504/// G2 - Beyond Routing
505///
506/// To specify routing beyond the destination
507///
508/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
509/// ----|----|-------|--------|----|------|-------
510/// 01 | 312 | Special Indicator Code | 1 | M | ID | 1/1
511/// 02 | 352 | Description | 1 | O | AN | 1/80
512#[derive(
513    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
514)]
515pub struct G2 {
516    #[serde(rename = "01")]
517    pub _01: crate::v005010::element::E312,
518    #[serde(rename = "02")]
519    pub _02: Option<String>,
520}
521
522/// G17 - Item Detail (Invoice)
523///
524/// To specify the invoice detail for a grocery product line item
525///
526/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
527/// ----|----|-------|--------|----|------|-------
528/// 01 | 358 | Quantity Invoiced | 1 | M | R | 1/15
529/// 02 | 355 | Unit or Basis for Measurement Code | 1 | M | ID | 2/2
530/// 03 | 237 | Item List Cost | 1 | X | R | 1/9
531/// 04 | 438 | U.P.C. Case Code | 1 | X | AN | 12/12
532/// 05 | 235 | Product/Service ID Qualifier | 1 | X | ID | 2/2
533/// 06 | 234 | Product/Service ID | 1 | X | AN | 1/48
534/// 07 | 235 | Product/Service ID Qualifier | 1 | X | ID | 2/2
535/// 08 | 234 | Product/Service ID | 1 | X | AN | 1/48
536/// 09 | 417 | Price Bracket Identifier | 1 | O | AN | 1/3
537/// 10 | 382 | Number of Units Shipped | 1 | X | R | 1/10
538/// 11 | 355 | Unit or Basis for Measurement Code | 1 | X | ID | 2/2
539/// 12 | 439 | Price List Number | 1 | O | AN | 1/16
540/// 13 | 440 | Price List Issue Number | 1 | O | AN | 1/16
541/// 14 | 782 | Monetary Amount | 1 | X | R | 1/18
542#[derive(
543    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
544)]
545pub struct G17 {
546    #[serde(rename = "01")]
547    pub _01: crate::v005010::element::E358,
548    #[serde(rename = "02")]
549    pub _02: String,
550    #[serde(rename = "03")]
551    pub _03: Option<crate::v005010::element::E237>,
552    #[serde(rename = "04")]
553    pub _04: Option<String>,
554    #[serde(rename = "05")]
555    pub _05: Option<String>,
556    #[serde(rename = "06")]
557    pub _06: Option<String>,
558    #[serde(rename = "07")]
559    pub _07: Option<String>,
560    #[serde(rename = "08")]
561    pub _08: Option<String>,
562    #[serde(rename = "09")]
563    pub _09: Option<String>,
564    #[serde(rename = "10")]
565    pub _10: Option<crate::v005010::element::E382>,
566    #[serde(rename = "11")]
567    pub _11: Option<String>,
568    #[serde(rename = "12")]
569    pub _12: Option<String>,
570    #[serde(rename = "13")]
571    pub _13: Option<String>,
572    #[serde(rename = "14")]
573    pub _14: Option<crate::v005010::element::E782>,
574}
575
576/// G19 - Item Detail (Quantity/Unit of Measure/Price Differences)
577///
578/// To specify quantity, unit-of-measure, and price difference detail
579///
580/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
581/// ----|----|-------|--------|----|------|-------
582/// 01 | 382 | Number of Units Shipped | 1 | X | R | 1/10
583/// 02 | 355 | Unit or Basis for Measurement Code | 1 | X | ID | 2/2
584/// 03 | 383 | Quantity Difference | 1 | X | R | 1/9
585/// 04 | 368 | Shipment/Order Status Code | 1 | X | ID | 2/2
586/// 05 | 381 | Price Reason Code | 1 | O | ID | 1/1
587/// 06 | 445 | Terms Exception Code | 1 | O | ID | 2/2
588/// 07 | 438 | U.P.C. Case Code | 1 | O | AN | 12/12
589/// 08 | 235 | Product/Service ID Qualifier | 1 | X | ID | 2/2
590/// 09 | 234 | Product/Service ID | 1 | X | AN | 1/48
591#[derive(
592    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
593)]
594pub struct G19 {
595    #[serde(rename = "01")]
596    pub _01: Option<crate::v005010::element::E382>,
597    #[serde(rename = "02")]
598    pub _02: Option<String>,
599    #[serde(rename = "03")]
600    pub _03: Option<crate::v005010::element::E383>,
601    #[serde(rename = "04")]
602    pub _04: Option<crate::v005010::element::E368>,
603    #[serde(rename = "05")]
604    pub _05: Option<crate::v005010::element::E381>,
605    #[serde(rename = "06")]
606    pub _06: Option<crate::v005010::element::E445>,
607    #[serde(rename = "07")]
608    pub _07: Option<String>,
609    #[serde(rename = "08")]
610    pub _08: Option<String>,
611    #[serde(rename = "09")]
612    pub _09: Option<String>,
613}
614
615/// G20 - Item Packing Detail
616///
617/// To specify packing detail for a grocery product line item
618///
619/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
620/// ----|----|-------|--------|----|------|-------
621/// 01 | 356 | Pack | 1 | O | N0 | 1/6
622/// 02 | 357 | Size | 1 | X | R | 1/8
623/// 03 | 355 | Unit or Basis for Measurement Code | 1 | X | ID | 2/2
624/// 04 | 81 | Weight | 1 | X | R | 1/10
625/// 05 | 355 | Unit or Basis for Measurement Code | 1 | X | ID | 2/2
626/// 06 | 183 | Volume | 1 | X | R | 1/8
627/// 07 | 355 | Unit or Basis for Measurement Code | 1 | X | ID | 2/2
628/// 08 | 397 | Color | 1 | O | AN | 1/10
629/// 09 | 810 | Inner Pack | 1 | O | N0 | 1/6
630#[derive(
631    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
632)]
633pub struct G20 {
634    #[serde(rename = "01")]
635    pub _01: Option<crate::v005010::element::E356>,
636    #[serde(rename = "02")]
637    pub _02: Option<crate::v005010::element::E357>,
638    #[serde(rename = "03")]
639    pub _03: Option<String>,
640    #[serde(rename = "04")]
641    pub _04: Option<crate::v005010::element::E81>,
642    #[serde(rename = "05")]
643    pub _05: Option<String>,
644    #[serde(rename = "06")]
645    pub _06: Option<crate::v005010::element::E183>,
646    #[serde(rename = "07")]
647    pub _07: Option<String>,
648    #[serde(rename = "08")]
649    pub _08: Option<String>,
650    #[serde(rename = "09")]
651    pub _09: Option<crate::v005010::element::E810>,
652}
653
654/// G25 - F.O.B. Information
655///
656/// To specify the F.O.B. terms for a grocery transaction
657///
658/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
659/// ----|----|-------|--------|----|------|-------
660/// 01 | 146 | Shipment Method of Payment | 1 | M | ID | 2/2
661/// 02 | 433 | F.O.B. Point Code | 1 | M | ID | 2/2
662/// 03 | 434 | F.O.B. Point | 1 | O | AN | 1/30
663#[derive(
664    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
665)]
666pub struct G25 {
667    #[serde(rename = "01")]
668    pub _01: String,
669    #[serde(rename = "02")]
670    pub _02: crate::v005010::element::E433,
671    #[serde(rename = "03")]
672    pub _03: Option<String>,
673}
674
675/// GY - Geography
676///
677/// To specify a geographic area
678///
679/// REF | ID | NAME | REQ | TYPE | MIN/MAX
680/// ----|----|-------|----|------|-------
681/// 01 | 262 | Geography Qualifier Code | M | ID | 1/1
682/// 02 | 699 | Commodity/Geographic Logical Connector Code | O | ID | 1/1
683/// 03 | 309 | Location Qualifier | C | ID | 1/2
684/// 04 | 156 | State or Province Code | O | ID | 2/2
685/// 05 | 310 | Location Identifier | C | AN | 1/30
686/// 06 | 310 | Location Identifier | O | AN | 1/30
687/// 07 | 140 | Standard Carrier Alpha Code | O | ID | 2/4
688/// 08 | 259 | Change Type Code | O | ID | 1/1
689/// 09 | 140 | Standard Carrier Alpha Code | C | ID | 2/4
690/// 10 | 697 | Docket Control Number | C | AN | 1/7
691/// 11 | 690 | Docket Identification | C | AN | 1/11
692/// 12 | 260 | Group Title | O | AN | 2/30
693/// 13 | 156 | State or Province Code | C | ID | 2/2
694/// 14 | 19 | City Name | C | AN | 2/30
695/// 15 | 1073 | Yes/No Condition or Response Code | O | ID | 1/1
696#[derive(
697    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
698)]
699pub struct GY {
700    #[serde(rename = "01")]
701    pub _01: crate::v005010::element::E262,
702    #[serde(rename = "02")]
703    pub _02: Option<crate::v005010::element::E699>,
704    #[serde(rename = "03")]
705    pub _03: Option<String>,
706    #[serde(rename = "04")]
707    pub _04: Option<String>,
708    #[serde(rename = "05")]
709    pub _05: Option<String>,
710    #[serde(rename = "06")]
711    pub _06: Option<String>,
712    #[serde(rename = "07")]
713    pub _07: Option<String>,
714    #[serde(rename = "08")]
715    pub _08: Option<crate::v005010::element::E259>,
716    #[serde(rename = "09")]
717    pub _09: Option<String>,
718    #[serde(rename = "10")]
719    pub _10: Option<String>,
720    #[serde(rename = "11")]
721    pub _11: Option<String>,
722    #[serde(rename = "12")]
723    pub _12: Option<String>,
724    #[serde(rename = "13")]
725    pub _13: Option<String>,
726    #[serde(rename = "14")]
727    pub _14: Option<String>,
728    #[serde(rename = "15")]
729    pub _15: Option<crate::v005010::element::E1073>,
730}
731
732/// G22 - Pre-Pricing Information
733///
734/// To provide pre-pricing information
735///
736/// REF | ID | NAME | REQ | TYPE | MIN/MAX
737/// ----|----|-------|----|------|-------
738/// 01 | 288 | Pre-priced Option Code | M | ID | 1/1
739/// 02 | 420 | Price New, Suggested Retail | O | N2 | 2/7
740/// 03 | 289 | Multiple Price Quantity | O | N0 | 1/2
741/// 04 | 3 | Free-form Message | O | AN | 1/60
742/// 05 | 373 | Date | O | DT | 8/8
743#[derive(
744    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
745)]
746pub struct G22 {
747    #[serde(rename = "01")]
748    pub _01: crate::v005010::element::E288,
749    #[serde(rename = "02")]
750    pub _02: Option<crate::v005010::element::E420>,
751    #[serde(rename = "03")]
752    pub _03: Option<crate::v005010::element::E289>,
753    #[serde(rename = "04")]
754    pub _04: Option<String>,
755    #[serde(rename = "05")]
756    pub _05: Option<String>,
757}
758
759/// G24 - Promotion/Deal Number
760///
761/// To reference a promotion number related to the price change
762///
763/// REF | ID | NAME | REQ | TYPE | MIN/MAX
764/// ----|----|-------|----|------|-------
765/// 01 | 341 | Allowance or Charge Number | M | AN | 1/16
766#[derive(
767    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
768)]
769pub struct G24 {
770    #[serde(rename = "01")]
771    pub _01: String,
772}
773
774/// G46 - Promotion/Price Reduction Allowance or Charge
775///
776/// To specify the allowance or charge associated with a promotion or price reduction
777///
778/// REF | ID | NAME | REQ | TYPE | MIN/MAX
779/// ----|----|-------|----|------|-------
780/// 01 | 340 | Allowance or Charge Code | M | ID | 1/3
781/// 02 | 331 | Allowance or Charge Method of Handling Code | M | ID | 2/2
782/// 03 | 359 | Allowance or Charge Rate | C | R | 1/15
783/// 04 | 355 | Unit or Basis for Measurement Code | C | ID | 2/2
784/// 05 | 610 | Amount | C | N2 | 1/15
785/// 06 | 378 | Allowance/Charge Percent Qualifier | C | ID | 1/1
786/// 07 | 332 | Percent, Decimal Format | C | R | 1/6
787/// 08 | 769 | Exception Number | O | AN | 1/16
788/// 09 | 770 | Option Number | O | AN | 1/20
789/// 10 | 352 | Description | O | AN | 1/80
790/// 11 | 236 | Price Identifier Code | O | ID | 3/3
791/// 12 | 1470 | Number | O | N0 | 1/9
792#[derive(
793    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
794)]
795pub struct G46 {
796    #[serde(rename = "01")]
797    pub _01: crate::v005010::element::E340,
798    #[serde(rename = "02")]
799    pub _02: crate::v005010::element::E331,
800    #[serde(rename = "03")]
801    pub _03: Option<crate::v005010::element::E359>,
802    #[serde(rename = "04")]
803    pub _04: Option<String>,
804    #[serde(rename = "05")]
805    pub _05: Option<crate::v005010::element::E610>,
806    #[serde(rename = "06")]
807    pub _06: Option<crate::v005010::element::E378>,
808    #[serde(rename = "07")]
809    pub _07: Option<crate::v005010::element::E332>,
810    #[serde(rename = "08")]
811    pub _08: Option<String>,
812    #[serde(rename = "09")]
813    pub _09: Option<String>,
814    #[serde(rename = "10")]
815    pub _10: Option<String>,
816    #[serde(rename = "11")]
817    pub _11: Option<crate::v005010::element::E236>,
818    #[serde(rename = "12")]
819    pub _12: Option<crate::v005010::element::E1470>,
820}
821
822/// G23 - Terms of Sale
823///
824/// To specify the terms of sale for a grocery transaction
825///
826/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
827/// ----|----|-------|--------|----|------|-------
828/// 01 | 336 | Terms Type Code | 1 | M | ID | 2/2
829/// 02 | 333 | Terms Basis Date Code | 1 | M | ID | 1/2
830/// 03 | 282 | Terms Start Date | 1 | O | DT | 8/8
831/// 04 | 283 | Terms Due Date Qualifier | 1 | O | ID | 2/2
832/// 05 | 338 | Terms Discount Percent | 1 | O | R | 1/6
833/// 06 | 370 | Terms Discount Due Date | 1 | O | DT | 8/8
834/// 07 | 351 | Terms Discount Days Due | 1 | O | N0 | 1/3
835/// 08 | 446 | Terms Net Due Date | 1 | X | DT | 8/8
836/// 09 | 386 | Terms Net Days | 1 | X | N0 | 1/3
837/// 10 | 362 | Terms Discount Amount | 1 | O | N2 | 1/10
838/// 11 | 391 | Discounted Amount Due | 1 | O | N2 | 1/10
839/// 12 | 390 | Amount Subject to Terms Discount | 1 | O | N2 | 1/10
840/// 13 | 343 | Installment Total Invoice Amount Due | 1 | O | N2 | 1/10
841/// 14 | 342 | Percent of Invoice Payable | 1 | O | R | 1/5
842/// 15 | 3 | Free-form Message | 1 | O | AN | 1/60
843/// 16 | 713 | Installment Group Indicator | 1 | O | N0 | 2/2
844#[derive(
845    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
846)]
847pub struct G23 {
848    #[serde(rename = "01")]
849    pub _01: String,
850    #[serde(rename = "02")]
851    pub _02: crate::v005010::element::E333,
852    #[serde(rename = "03")]
853    pub _03: Option<crate::v005010::element::E282>,
854    #[serde(rename = "04")]
855    pub _04: Option<crate::v005010::element::E283>,
856    #[serde(rename = "05")]
857    pub _05: Option<crate::v005010::element::E338>,
858    #[serde(rename = "06")]
859    pub _06: Option<crate::v005010::element::E370>,
860    #[serde(rename = "07")]
861    pub _07: Option<crate::v005010::element::E351>,
862    #[serde(rename = "08")]
863    pub _08: Option<crate::v005010::element::E446>,
864    #[serde(rename = "09")]
865    pub _09: Option<crate::v005010::element::E386>,
866    #[serde(rename = "10")]
867    pub _10: Option<crate::v005010::element::E362>,
868    #[serde(rename = "11")]
869    pub _11: Option<crate::v005010::element::E391>,
870    #[serde(rename = "12")]
871    pub _12: Option<crate::v005010::element::E390>,
872    #[serde(rename = "13")]
873    pub _13: Option<crate::v005010::element::E343>,
874    #[serde(rename = "14")]
875    pub _14: Option<crate::v005010::element::E342>,
876    #[serde(rename = "15")]
877    pub _15: Option<String>,
878    #[serde(rename = "16")]
879    pub _16: Option<crate::v005010::element::E713>,
880}
881
882/// G4 - Scale Identification
883///
884/// To identify the scale type and the location and time a shipment is weighed
885///
886/// REF | ID | NAME | REQ | TYPE | MIN/MAX
887/// ----|----|-------|----|------|-------
888/// 01 | 19 | City Name | M | AN | 2/30
889/// 02 | 156 | State or Province Code | M | ID | 2/2
890/// 03 | 93 | Name | O | AN | 1/60
891/// 04 | 373 | Date | M | DT | 8/8
892/// 05 | 337 | Time | O | TM | 4/8
893/// 06 | 570 | Scale Type Code | O | ID | 1/1
894#[derive(
895    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
896)]
897pub struct G4 {
898    #[serde(rename = "01")]
899    pub _01: String,
900    #[serde(rename = "02")]
901    pub _02: String,
902    #[serde(rename = "03")]
903    pub _03: Option<String>,
904    #[serde(rename = "04")]
905    pub _04: String,
906    #[serde(rename = "05")]
907    pub _05: Option<String>,
908    #[serde(rename = "06")]
909    pub _06: Option<crate::v005010::element::E570>,
910}
911
912/// G3 - Compensation Information
913///
914/// To convey brokerage, freight forwarder compensation, and other compensation information related to shipments
915///
916/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
917/// ----|----|------|--------|----|------|-------
918/// 01 | 315 | Compensation Paid | O |  | R 2/5
919/// 02 | 317 | Total Compensation Amount | M |  | N0 3/10
920/// 03 | 93 | Name | O |  | AN 1/60
921/// 04 | 201 | Business Transaction Status | O |  | ID 1/3
922/// 05 | 782 | Monetary Amount | O |  | R 1/18
923/// 06 | 73 | Compensation Qualifier | O |  | ID 1/1
924#[derive(
925    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
926)]
927pub struct G3 {
928    #[serde(rename = "01")]
929    pub _01: Option<crate::v005010::element::E315>,
930    #[serde(rename = "02")]
931    pub _02: crate::v005010::element::E317,
932    #[serde(rename = "03")]
933    pub _03: Option<String>,
934    #[serde(rename = "04")]
935    pub _04: Option<crate::v005010::element::E201>,
936    #[serde(rename = "05")]
937    pub _05: Option<crate::v005010::element::E782>,
938    #[serde(rename = "06")]
939    pub _06: Option<crate::v005010::element::E73>,
940}
941
942/// GF - Furnished Goods and Services
943///
944/// To provide information related to furnished goods and services
945///
946/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
947/// ----|----|-------|--------|----|------|-------
948/// 01 | 128 | Reference Identification Qualifier | 1 | X | ID | 2/3
949/// 02 | 127 | Reference Identification | 1 | X | AN | 1/50
950/// 03 | 367 | Contract Number | 1 | O | AN | 1/30
951/// 04 | 782 | Monetary Amount | 1 | O | R | 1/18
952/// 05 | 128 | Reference Identification Qualifier | 1 | X | ID | 2/3
953/// 06 | 127 | Reference Identification | 1 | X | AN | 1/50
954/// 07 | 328 | Release Number | 1 | O | AN | 1/30
955/// 08 | 128 | Reference Identification Qualifier | 1 | X | ID | 2/3
956/// 09 | 127 | Reference Identification | 1 | X | AN | 1/50
957#[derive(
958    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
959)]
960pub struct GF {
961    #[serde(rename = "01")]
962    pub _01: Option<String>,
963    #[serde(rename = "02")]
964    pub _02: Option<String>,
965    #[serde(rename = "03")]
966    pub _03: Option<String>,
967    #[serde(rename = "04")]
968    pub _04: Option<crate::v005010::element::E782>,
969    #[serde(rename = "05")]
970    pub _05: Option<String>,
971    #[serde(rename = "06")]
972    pub _06: Option<String>,
973    #[serde(rename = "07")]
974    pub _07: Option<String>,
975    #[serde(rename = "08")]
976    pub _08: Option<String>,
977    #[serde(rename = "09")]
978    pub _09: Option<String>,
979}
980
981/// G05 - Total Shipment Information
982///
983/// To specify the total quantity, weight, and volume of a shipment
984///
985/// REF | ID | NAME | REQ | TYPE | MIN/MAX
986/// ----|----|-------|----|------|-------
987/// 01 | 382 | Number of Units Shipped | C | R | 1/10
988/// 02 | 355 | Unit or Basis for Measurement Code | C | ID | 2/2
989/// 03 | 81 | Weight | C | R | 1/10
990/// 04 | 355 | Unit or Basis for Measurement Code | C | ID | 2/2
991/// 05 | 183 | Volume | C | R | 1/8
992/// 06 | 355 | Unit or Basis for Measurement Code | C | ID | 2/2
993/// 07 | 80 | Lading Quantity | C | N0 | 1/7
994/// 08 | 355 | Unit or Basis for Measurement Code | C | ID | 2/2
995#[derive(
996    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
997)]
998pub struct G05 {
999    #[serde(rename = "01")]
1000    pub _01: Option<crate::v005010::element::E382>,
1001    #[serde(rename = "02")]
1002    pub _02: Option<String>,
1003    #[serde(rename = "03")]
1004    pub _03: Option<crate::v005010::element::E81>,
1005    #[serde(rename = "04")]
1006    pub _04: Option<String>,
1007    #[serde(rename = "05")]
1008    pub _05: Option<crate::v005010::element::E183>,
1009    #[serde(rename = "06")]
1010    pub _06: Option<String>,
1011    #[serde(rename = "07")]
1012    pub _07: Option<crate::v005010::element::E80>,
1013    #[serde(rename = "08")]
1014    pub _08: Option<String>,
1015}
1016
1017/// G08 - Pallet Receipt Disposition
1018///
1019/// To convey the disposition of pallets received
1020///
1021/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
1022/// ----|----|-------|--------|----|------|-------
1023/// 01 | 409 | Quantity of Pallets Received | 1 | O | N0 | 1/3
1024/// 02 | 410 | Quantity of Pallets Returned | 1 | O | N0 | 1/3
1025/// 03 | 411 | Quantity Contested | 1 | X | R | 1/7
1026/// 04 | 412 | Receiving Condition Code | 1 | X | ID | 2/2
1027#[derive(
1028    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1029)]
1030pub struct G08 {
1031    #[serde(rename = "01")]
1032    pub _01: Option<crate::v005010::element::E409>,
1033    #[serde(rename = "02")]
1034    pub _02: Option<crate::v005010::element::E410>,
1035    #[serde(rename = "03")]
1036    pub _03: Option<crate::v005010::element::E411>,
1037    #[serde(rename = "04")]
1038    pub _04: Option<crate::v005010::element::E412>,
1039}
1040
1041/// G38 - Claim Payment Information
1042///
1043/// To convey claim payment amount, method, and disposition
1044///
1045/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
1046/// ----|----|-------|--------|----|------|-------
1047/// 01 | 782 | Monetary Amount | 1 | M | R | 1/18
1048/// 02 | 591 | Payment Method Code | 1 | O | ID | 3/3
1049/// 03 | 1292 | Returns Disposition Code | 1 | O | ID | 2/2
1050#[derive(
1051    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1052)]
1053pub struct G38 {
1054    #[serde(rename = "01")]
1055    pub _01: crate::v005010::element::E782,
1056    #[serde(rename = "02")]
1057    pub _02: Option<String>,
1058    #[serde(rename = "03")]
1059    pub _03: Option<crate::v005010::element::E1292>,
1060}
1061
1062/// G31 - Total Invoice Quantity and Weight
1063///
1064/// To specify the total invoice quantity and weight
1065///
1066/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
1067/// ----|----|-------|--------|----|------|-------
1068/// 01 | 380 | Quantity | 1 | M | R | 1/15
1069/// 02 | 81 | Weight | 1 | M | R | 1/10
1070/// 03 | 188 | Weight Unit Code | 1 | O | ID | 1/1
1071#[derive(
1072    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1073)]
1074pub struct G31 {
1075    #[serde(rename = "01")]
1076    pub _01: String,
1077    #[serde(rename = "02")]
1078    pub _02: crate::v005010::element::E81,
1079    #[serde(rename = "03")]
1080    pub _03: Option<String>,
1081}
1082
1083/// G33 - Total Invoice Amount
1084///
1085/// To specify the total invoice amount
1086///
1087/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
1088/// ----|----|-------|--------|----|------|-------
1089/// 01 | 610 | Amount | 1 | M | N2 | 1/15
1090#[derive(
1091    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1092)]
1093pub struct G33 {
1094    #[serde(rename = "01")]
1095    pub _01: crate::v005010::element::E610,
1096}
1097
1098/// G26 - Pricing Conditions
1099///
1100/// To provide pricing conditions
1101///
1102/// REF | ID | NAME | REQ | TYPE | MIN/MAX
1103/// ----|----|-------|----|------|-------
1104/// 01 | 290 | Price Condition Code | M | ID | 2/2
1105/// 02 | 432 | Date Qualifier | C | ID | 2/2
1106/// 03 | 373 | Date | C | DT | 8/8
1107/// 04 | 292 | Quantity Basis | C | ID | 3/3
1108/// 05 | 380 | Quantity | C | R | 1/15
1109/// 06 | 355 | Unit or Basis for Measurement Code | C | ID | 2/2
1110#[derive(
1111    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1112)]
1113pub struct G26 {
1114    #[serde(rename = "01")]
1115    pub _01: crate::v005010::element::E290,
1116    #[serde(rename = "02")]
1117    pub _02: Option<String>,
1118    #[serde(rename = "03")]
1119    pub _03: Option<String>,
1120    #[serde(rename = "04")]
1121    pub _04: Option<crate::v005010::element::E292>,
1122    #[serde(rename = "05")]
1123    pub _05: Option<String>,
1124    #[serde(rename = "06")]
1125    pub _06: Option<String>,
1126}
1127
1128/// G36 - Price List References and Dates
1129///
1130/// To provide price list references and descriptions
1131///
1132/// REF | ID | NAME | REQ | TYPE | MIN/MAX
1133/// ----|----|-------|----|------|-------
1134/// 01 | 439 | Price List Number | M | AN | 1/16
1135/// 02 | 440 | Price List Issue Number | O | AN | 1/16
1136/// 03 | 373 | Date | M | DT | 8/8
1137/// 04 | 291 | Price Condition Applies Code | O | ID | 3/3
1138#[derive(
1139    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1140)]
1141pub struct G36 {
1142    #[serde(rename = "01")]
1143    pub _01: String,
1144    #[serde(rename = "02")]
1145    pub _02: Option<String>,
1146    #[serde(rename = "03")]
1147    pub _03: String,
1148    #[serde(rename = "04")]
1149    pub _04: Option<crate::v005010::element::E291>,
1150}
1151
1152/// G39 - Item Characteristics - Manufacturer
1153///
1154/// To transmit physical characteristics for an item at the manufacturer level
1155#[derive(
1156    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1157)]
1158pub struct G39 {
1159    #[serde(rename = "01")]
1160    pub _01: Option<String>,
1161    #[serde(rename = "02")]
1162    pub _02: Option<String>,
1163    #[serde(rename = "03")]
1164    pub _03: Option<String>,
1165    #[serde(rename = "04")]
1166    pub _04: Option<String>,
1167    #[serde(rename = "05")]
1168    pub _05: Option<String>,
1169    #[serde(rename = "06")]
1170    pub _06: Option<String>,
1171    #[serde(rename = "07")]
1172    pub _07: Option<String>,
1173    #[serde(rename = "08")]
1174    pub _08: Option<String>,
1175    #[serde(rename = "09")]
1176    pub _09: Option<String>,
1177    #[serde(rename = "10")]
1178    pub _10: Option<String>,
1179    #[serde(rename = "11")]
1180    pub _11: Option<String>,
1181    #[serde(rename = "12")]
1182    pub _12: Option<String>,
1183    #[serde(rename = "13")]
1184    pub _13: Option<String>,
1185    #[serde(rename = "14")]
1186    pub _14: Option<String>,
1187    #[serde(rename = "15")]
1188    pub _15: Option<String>,
1189    #[serde(rename = "16")]
1190    pub _16: Option<String>,
1191    #[serde(rename = "17")]
1192    pub _17: Option<String>,
1193    #[serde(rename = "18")]
1194    pub _18: Option<String>,
1195    #[serde(rename = "19")]
1196    pub _19: Option<String>,
1197    #[serde(rename = "20")]
1198    pub _20: Option<String>,
1199    #[serde(rename = "21")]
1200    pub _21: Option<String>,
1201    #[serde(rename = "22")]
1202    pub _22: Option<String>,
1203    #[serde(rename = "23")]
1204    pub _23: Option<String>,
1205    #[serde(rename = "24")]
1206    pub _24: Option<String>,
1207    #[serde(rename = "25")]
1208    pub _25: Option<String>,
1209    #[serde(rename = "26")]
1210    pub _26: Option<String>,
1211    #[serde(rename = "27")]
1212    pub _27: Option<String>,
1213    #[serde(rename = "28")]
1214    pub _28: Option<String>,
1215    #[serde(rename = "29")]
1216    pub _29: Option<String>,
1217}
1218
1219/// G40 - Pricing Information
1220///
1221/// To provide item cost and price information
1222///
1223/// REF | ID | NAME | REQ | TYPE | MIN/MAX
1224/// ----|----|-------|----|------|-------
1225/// 01 | 417 | Price Bracket Identifier | O | AN | 1/3
1226/// 02 | 418 | Item List Cost - New | M | R | 1/9
1227/// 03 | 419 | Item List Cost - Old | O | R | 1/9
1228/// 04 | 369 | Free-form Description | O | AN | 1/45
1229/// 05 | 420 | Price New, Suggested Retail | O | N2 | 2/7
1230/// 06 | 421 | Price Old, Suggested Retail | O | N2 | 2/7
1231/// 07 | 355 | Unit or Basis for Measurement Code | O | ID | 2/2
1232/// 08 | 236 | Price Identifier Code | O | ID | 3/3
1233/// 09 | 1470 | Number | O | N0 | 1/9
1234#[derive(
1235    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1236)]
1237pub struct G40 {
1238    #[serde(rename = "01")]
1239    pub _01: Option<String>,
1240    #[serde(rename = "02")]
1241    pub _02: crate::v005010::element::E418,
1242    #[serde(rename = "03")]
1243    pub _03: Option<crate::v005010::element::E419>,
1244    #[serde(rename = "04")]
1245    pub _04: Option<String>,
1246    #[serde(rename = "05")]
1247    pub _05: Option<crate::v005010::element::E420>,
1248    #[serde(rename = "06")]
1249    pub _06: Option<crate::v005010::element::E421>,
1250    #[serde(rename = "07")]
1251    pub _07: Option<String>,
1252    #[serde(rename = "08")]
1253    pub _08: Option<crate::v005010::element::E236>,
1254    #[serde(rename = "09")]
1255    pub _09: Option<crate::v005010::element::E1470>,
1256}
1257
1258/// G43 - Market Area
1259///
1260/// To specify the geographic area in which a promotion or price is in effect
1261///
1262/// REF | ID | NAME | REQ | TYPE | MIN/MAX
1263/// ----|----|-------|----|------|-------
1264/// 01 | 771 | Market Area Code Qualifier | M | ID | 1/3
1265/// 02 | 767 | Market Area Code Identifier | O | AN | 1/13
1266/// 03 | 352 | Description | O | AN | 1/80
1267/// 04 | 687 | Class of Trade Code | O | ID | 2/2
1268#[derive(
1269    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1270)]
1271pub struct G43 {
1272    #[serde(rename = "01")]
1273    pub _01: crate::v005010::element::E771,
1274    #[serde(rename = "02")]
1275    pub _02: Option<String>,
1276    #[serde(rename = "03")]
1277    pub _03: Option<String>,
1278    #[serde(rename = "04")]
1279    pub _04: Option<crate::v005010::element::E687>,
1280}
1281
1282/// G54 - Minimum Order Quantity
1283///
1284/// To specify the minimum order quantity for a product
1285///
1286/// REF | ID | NAME | REQ | TYPE | MIN/MAX
1287/// ----|----|-------|----|------|-------
1288/// 01 | 380 | Quantity | M | R | 1/15
1289/// 02 | 355 | Unit or Basis for Measurement Code | M | ID | 2/2
1290/// 03 | 438 | U.P.C. Case Code | X | AN | 12/12
1291/// 04 | 235 | Product/Service ID Qualifier | X | ID | 2/2
1292/// 05 | 234 | Product/Service ID | X | AN | 1/48
1293/// 06 | 369 | Free-form Description | O | AN | 1/45
1294#[derive(
1295    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1296)]
1297pub struct G54 {
1298    #[serde(rename = "01")]
1299    pub _01: String,
1300    #[serde(rename = "02")]
1301    pub _02: String,
1302    #[serde(rename = "03")]
1303    pub _03: Option<String>,
1304    #[serde(rename = "04")]
1305    pub _04: Option<String>,
1306    #[serde(rename = "05")]
1307    pub _05: Option<String>,
1308    #[serde(rename = "06")]
1309    pub _06: Option<String>,
1310}
1311
1312/// G55 - Item Physical Details
1313///
1314/// To specify the physical details for a catalog item
1315#[derive(
1316    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1317)]
1318pub struct G55 {
1319    #[serde(rename = "01")]
1320    pub _01: String,
1321    #[serde(rename = "02")]
1322    pub _02: String,
1323    #[serde(rename = "03")]
1324    pub _03: Option<String>,
1325    #[serde(rename = "04")]
1326    pub _04: Option<String>,
1327    #[serde(rename = "05")]
1328    pub _05: Option<String>,
1329    #[serde(rename = "06")]
1330    pub _06: Option<String>,
1331    #[serde(rename = "07")]
1332    pub _07: Option<String>,
1333    #[serde(rename = "08")]
1334    pub _08: Option<String>,
1335    #[serde(rename = "09")]
1336    pub _09: Option<String>,
1337    #[serde(rename = "10")]
1338    pub _10: Option<String>,
1339    #[serde(rename = "11")]
1340    pub _11: Option<String>,
1341    #[serde(rename = "12")]
1342    pub _12: Option<String>,
1343    #[serde(rename = "13")]
1344    pub _13: Option<String>,
1345    #[serde(rename = "14")]
1346    pub _14: Option<String>,
1347    #[serde(rename = "15")]
1348    pub _15: Option<String>,
1349    #[serde(rename = "16")]
1350    pub _16: Option<String>,
1351    #[serde(rename = "17")]
1352    pub _17: Option<String>,
1353    #[serde(rename = "18")]
1354    pub _18: Option<String>,
1355    #[serde(rename = "19")]
1356    pub _19: Option<String>,
1357    #[serde(rename = "20")]
1358    pub _20: Option<String>,
1359    #[serde(rename = "21")]
1360    pub _21: Option<String>,
1361    #[serde(rename = "22")]
1362    pub _22: Option<String>,
1363    #[serde(rename = "23")]
1364    pub _23: Option<String>,
1365    #[serde(rename = "24")]
1366    pub _24: Option<String>,
1367    #[serde(rename = "25")]
1368    pub _25: Option<String>,
1369    #[serde(rename = "26")]
1370    pub _26: Option<String>,
1371    #[serde(rename = "27")]
1372    pub _27: Option<String>,
1373    #[serde(rename = "28")]
1374    pub _28: Option<String>,
1375    #[serde(rename = "29")]
1376    pub _29: Option<String>,
1377    #[serde(rename = "30")]
1378    pub _30: Option<String>,
1379    #[serde(rename = "31")]
1380    pub _31: Option<String>,
1381    #[serde(rename = "32")]
1382    pub _32: Option<String>,
1383    #[serde(rename = "33")]
1384    pub _33: Option<String>,
1385}
1386
1387/// G93 - Bracket/Pricing Information
1388///
1389/// To convey bracket and pricing information for an item
1390///
1391/// REF | ID | NAME | REQ | TYPE | MIN/MAX
1392/// ----|----|-------|----|------|-------
1393/// 01 | 417 | Price Bracket Identifier | O | AN | 1/3
1394/// 02 | 380 | Quantity | C | R | 1/15
1395/// 03 | 355 | Unit or Basis for Measurement Code | C | ID | 2/2
1396/// 04 | 369 | Free-form Description | O | AN | 1/45
1397/// 05 | 91 | Transportation Method/Type Code | O | ID | 1/2
1398/// 06 | 236 | Price Identifier Code | O | ID | 3/3
1399/// 07 | 306 | Action Code | O | ID | 1/2
1400/// 08 | 1073 | Yes/No Condition or Response Code | O | ID | 1/1
1401#[derive(
1402    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1403)]
1404pub struct G93 {
1405    #[serde(rename = "01")]
1406    pub _01: Option<String>,
1407    #[serde(rename = "02")]
1408    pub _02: Option<String>,
1409    #[serde(rename = "03")]
1410    pub _03: Option<String>,
1411    #[serde(rename = "04")]
1412    pub _04: Option<String>,
1413    #[serde(rename = "05")]
1414    pub _05: Option<String>,
1415    #[serde(rename = "06")]
1416    pub _06: Option<crate::v005010::element::E236>,
1417    #[serde(rename = "07")]
1418    pub _07: Option<String>,
1419    #[serde(rename = "08")]
1420    pub _08: Option<crate::v005010::element::E1073>,
1421}
1422
1423/// G42 - Promotion Announcement Identification
1424///
1425/// To identify promotion activities between trading partners
1426///
1427/// REF | ID | NAME | REQ | TYPE | MIN/MAX
1428/// ----|----|-------|----|------|-------
1429/// 01 | 423 | Promotion Status Code | M | ID | 2/2
1430/// 02 | 341 | Allowance or Charge Number | M | AN | 1/16
1431/// 03 | 640 | Transaction Type Code | O | ID | 2/2
1432#[derive(
1433    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1434)]
1435pub struct G42 {
1436    #[serde(rename = "01")]
1437    pub _01: crate::v005010::element::E423,
1438    #[serde(rename = "02")]
1439    pub _02: String,
1440    #[serde(rename = "03")]
1441    pub _03: Option<String>,
1442}
1443
1444/// G45 - Promotional Product Identification
1445///
1446/// To identify the product to which a promotion applies
1447#[derive(
1448    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1449)]
1450pub struct G45 {
1451    #[serde(rename = "01")]
1452    pub _01: Option<String>,
1453    #[serde(rename = "02")]
1454    pub _02: Option<String>,
1455    #[serde(rename = "03")]
1456    pub _03: Option<String>,
1457    #[serde(rename = "04")]
1458    pub _04: Option<String>,
1459    #[serde(rename = "05")]
1460    pub _05: Option<String>,
1461    #[serde(rename = "06")]
1462    pub _06: Option<String>,
1463    #[serde(rename = "07")]
1464    pub _07: Option<String>,
1465    #[serde(rename = "08")]
1466    pub _08: Option<String>,
1467    #[serde(rename = "09")]
1468    pub _09: Option<String>,
1469    #[serde(rename = "10")]
1470    pub _10: Option<String>,
1471    #[serde(rename = "11")]
1472    pub _11: Option<String>,
1473    #[serde(rename = "12")]
1474    pub _12: Option<String>,
1475    #[serde(rename = "13")]
1476    pub _13: Option<String>,
1477    #[serde(rename = "14")]
1478    pub _14: Option<String>,
1479    #[serde(rename = "15")]
1480    pub _15: Option<String>,
1481    #[serde(rename = "16")]
1482    pub _16: Option<String>,
1483    #[serde(rename = "17")]
1484    pub _17: Option<String>,
1485}
1486
1487/// G51 - Free Goods
1488///
1489/// To specify the free-goods or buy/get promotion terms
1490///
1491/// REF | ID | NAME | REQ | TYPE | MIN/MAX
1492/// ----|----|-------|----|------|-------
1493/// 01 | 773 | Quantity Free | C | N0 | 1/9
1494/// 02 | 355 | Unit or Basis for Measurement Code | C | ID | 2/2
1495/// 03 | 768 | Quantity Must Purchase | M | N0 | 1/9
1496/// 04 | 355 | Unit or Basis for Measurement Code | M | ID | 2/2
1497/// 05 | 438 | U.P.C. Case Code | O | AN | 12/12
1498/// 06 | 766 | U.P.C./EAN Consumer Package Code | O | AN | 12/12
1499/// 07 | 235 | Product/Service ID Qualifier | C | ID | 2/2
1500/// 08 | 234 | Product/Service ID | C | AN | 1/48
1501#[derive(
1502    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1503)]
1504pub struct G51 {
1505    #[serde(rename = "01")]
1506    pub _01: Option<crate::v005010::element::E773>,
1507    #[serde(rename = "02")]
1508    pub _02: Option<String>,
1509    #[serde(rename = "03")]
1510    pub _03: crate::v005010::element::E768,
1511    #[serde(rename = "04")]
1512    pub _04: String,
1513    #[serde(rename = "05")]
1514    pub _05: Option<String>,
1515    #[serde(rename = "06")]
1516    pub _06: Option<String>,
1517    #[serde(rename = "07")]
1518    pub _07: Option<String>,
1519    #[serde(rename = "08")]
1520    pub _08: Option<String>,
1521}
1522
1523/// G94 - Promotion Conditions
1524///
1525/// To indicate the option number associated with a promotion and to specify the 'AND' or 'OR' condition
1526///
1527/// REF | ID | NAME | REQ | TYPE | MIN/MAX
1528/// ----|----|-------|----|------|-------
1529/// 01 | 293 | Promotion Condition Qualifier | O | ID | 2/2
1530/// 02 | 770 | Option Number | M | AN | 1/20
1531#[derive(
1532    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1533)]
1534pub struct G94 {
1535    #[serde(rename = "01")]
1536    pub _01: Option<crate::v005010::element::E293>,
1537    #[serde(rename = "02")]
1538    pub _02: String,
1539}
1540
1541/// G50 - Purchase Order Identification
1542///
1543/// To carry purchase order identification data
1544#[derive(
1545    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1546)]
1547pub struct G50 {
1548    #[serde(rename = "01")]
1549    pub _01: String,
1550    #[serde(rename = "02")]
1551    pub _02: Option<String>,
1552    #[serde(rename = "03")]
1553    pub _03: Option<String>,
1554    #[serde(rename = "04")]
1555    pub _04: Option<String>,
1556    #[serde(rename = "05")]
1557    pub _05: Option<String>,
1558    #[serde(rename = "06")]
1559    pub _06: Option<String>,
1560    #[serde(rename = "07")]
1561    pub _07: Option<String>,
1562    #[serde(rename = "08")]
1563    pub _08: Option<String>,
1564    #[serde(rename = "09")]
1565    pub _09: Option<String>,
1566    #[serde(rename = "10")]
1567    pub _10: Option<String>,
1568}
1569
1570/// G01 - Invoice Identification
1571///
1572/// To carry invoice identification data
1573#[derive(
1574    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1575)]
1576pub struct G01 {
1577    #[serde(rename = "01")]
1578    pub _01: String,
1579    #[serde(rename = "02")]
1580    pub _02: Option<String>,
1581    #[serde(rename = "03")]
1582    pub _03: Option<String>,
1583    #[serde(rename = "04")]
1584    pub _04: Option<String>,
1585    #[serde(rename = "05")]
1586    pub _05: Option<String>,
1587    #[serde(rename = "06")]
1588    pub _06: Option<String>,
1589    #[serde(rename = "07")]
1590    pub _07: Option<String>,
1591    #[serde(rename = "08")]
1592    pub _08: Option<String>,
1593    #[serde(rename = "09")]
1594    pub _09: Option<String>,
1595    #[serde(rename = "10")]
1596    pub _10: Option<String>,
1597    #[serde(rename = "11")]
1598    pub _11: Option<String>,
1599    #[serde(rename = "12")]
1600    pub _12: Option<String>,
1601}
1602
1603/// GA - Price Authority Information
1604#[derive(
1605    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
1606)]
1607pub struct GA {
1608    #[serde(rename = "01")]
1609    pub _01: Option<String>,
1610    #[serde(rename = "02")]
1611    pub _02: Option<String>,
1612    #[serde(rename = "03")]
1613    pub _03: Option<String>,
1614    #[serde(rename = "04")]
1615    pub _04: Option<String>,
1616    #[serde(rename = "05")]
1617    pub _05: Option<String>,
1618    #[serde(rename = "06")]
1619    pub _06: Option<String>,
1620    #[serde(rename = "07")]
1621    pub _07: Option<String>,
1622    #[serde(rename = "08")]
1623    pub _08: Option<String>,
1624    #[serde(rename = "09")]
1625    pub _09: Option<String>,
1626    #[serde(rename = "10")]
1627    pub _10: Option<String>,
1628    #[serde(rename = "11")]
1629    pub _11: Option<String>,
1630    #[serde(rename = "12")]
1631    pub _12: Option<String>,
1632    #[serde(rename = "13")]
1633    pub _13: Option<String>,
1634    #[serde(rename = "14")]
1635    pub _14: Option<String>,
1636    #[serde(rename = "15")]
1637    pub _15: Option<String>,
1638    #[serde(rename = "16")]
1639    pub _16: Option<String>,
1640    #[serde(rename = "17")]
1641    pub _17: Option<String>,
1642    #[serde(rename = "18")]
1643    pub _18: Option<String>,
1644}