UNPKG

rdpcrystal-edi-library

Version:

ASCII X12 EDI Library, Create, Parse, Load, Validate, View, Edit, Split, Join And Scrub EDI Data

102 lines (80 loc) 3.06 kB
/// <reference path="../../lib/RDPCrystalEDILibrary.d.ts" /> const edi = require('../../lib/RDPCrystalEDILibrary').RDPCrystalEDILibrary; const fs = require('fs'); const enumMap = require('./enummap'); let map = new enumMap(); //Create a new validator let validator = new edi.EDIValidator(); //Load a 5010 270 validation rules let validationRules = fs.readFileSync('../../validationrules/5010/Rules_5010_835_005010X221A1.Rules').toString(); validator.EDIRulesFileData = validationRules; //Set the EDI data to validate and load. This can also be read in from a file validator.EDIDataString = fs.readFileSync('./5010_835.txt').toString(); console.log("Validating 5010 835 EDI Files"); validator.validate(); console.log("Errors Found"); //Get all errors from the EDI data for (let i = 0; i < validator.Errors.Count; i++) { let error = validator.Errors.getItem(i); console.log( { Type: "Error", Line: error.LineNumber, Transaction: "", SnipLevel: map.SnipLevelTypes[error.SnipLevel], //SnipTestLevel Enum Message: map.MessageTypes[error.Message], //EDIValidationMessage Enum Loop: error.Loop, Segment: error.Segment, Element: error.ElementOrdinal, Composite: error.CompositeElementOrdinal, Description: error.Description, Ordinal: error.SegmentOrdinal }); } let doc = validator.EDILightWeightDocument; //Write out a visual representation of the loaded EDI document writeDocumentTree(doc.Loops.getItem(0), 0); function writeDocumentTree(loop, indent) { if (loop != null) { for (let i = 0; i < indent; i++) { process.stdout.write(" "); } console.log(loop.Name); indent++; writeSegment(loop.Segments, indent); if (loop.Loops != null) { for (let i = 0; i < loop.Loops.Count; i++) { writeDocumentTree(loop.Loops.getItem(i), indent); } indent++; } } } function writeSegment(segments, indent) { for (let i = 0; i < segments.Count; i++) { let seg = segments.getItem(i); for (let i = 0; i < indent; i++) { process.stdout.write(" "); } console.log(seg.Name); writeElement(seg.Elements, indent); } } function writeElement(elements, indent) { for (let i = 0; i < elements.Count; i++) { let elem = elements.getItem(i); for (let i = 0; i < indent; i++) { process.stdout.write(" "); } if (elem.Composite) { console.log("Composite"); //Check for composite elements if (elem.Elements != null && elem.Elements.Count > 0) { writeElement(elem.Elements, ++indent); indent--; } } else { console.log("[" + elem.DataValue + "]"); } } }