Skip to content

0.3.0 Milestone 7

Pre-release
Pre-release
Compare
Choose a tag to compare
@CodeSmell CodeSmell released this 26 Apr 19:18
· 39 commits to master since this release

This milestone will break backward compatibility with the previous milestones for 0.3.0

Updated ASN Segments
Several segments used BigDecimal to capture data elements. These have been switched to a String. This will prevent Gozer from throwing an X12ParserException when a supplier passes a non-numeric value. This will allow users of the framework to check the values and to easily generate an 824 file indicating the problem as well as include the pertinent identifying information for the EDI file and transaction set.

  • SN1ItemDetail
    -- no longer uses BigDecimal for segment data elements
  • TD1CarrierDetail
    -- no longer uses BigDecimal for segment data elements
  • N1PartyIdentification
    -- updated N3 segment to a List
    -- added REF as a List

The ConversionUtil will remain part of Gozer so that applications can use it to convert values to a BigDecimal.

Updated ASN Loops
The primary reason is the following segments have been updated on the ASN loops based on comparison with the various EDI guides used in Walmart

  • Shipment
    -- updated TD1 segment to a List
    -- updated TD5 segment to a List
    -- updated TD3 segment to a List
  • Order
    -- added TD1 segment as a List
  • Tare
    -- updated PKG segment to a List
    -- added PAL segment
    -- updated MAN segment to a List
  • Pack
    -- updated MAN segment to a List
    -- added N1 segment
    -- added PO4 segment
    -- added TD1 segment as a List
  • Item
    -- added DTM segment as a List
    -- added REF segment as a List

Access to unparsed segments on Loops
The X12ParsedLoop has a new attribute - a list of unparsedSegments
When an unexpected segment is encountered on a Loop it will be added to this list.

An example:

    private void doTareSegments(X12Segment segment, SegmentIterator segmentIterator, Tare tare) {
        switch (segment.getIdentifier()) {
            case PKGPackaging.IDENTIFIER:
                tare.addPKGPackaging(PKGPackagingParser.parse(segment));
                break;       
            case PALPalletType.IDENTIFIER:
                tare.setPal(PALPalletTypeParser.parse(segment));
                break;
            case MANMarkNumber.IDENTIFIER:
                tare.addMANMarkNumber(MANMarkNumberParser.parse(segment));
                break;                
            default:
                tare.addUnparsedSegment(segment);
                break;
        }
    }