Generate EDI 997 Functional Acknowledgment - olmelabs/EdiEngine GitHub Wiki
Generation EDI 997 Functional Acknowledgment
using System;
using EdiEngine;
using EdiEngine.Runtime;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string edi =
@"ISA*01*0000000000*01*0000000000*ZZ*ABCDEFGHIJKLMNO*ZZ*123456789012345*101127*1719*U*00400*000003438*0*P*>
GS*OW*7705551212*3111350000*20000128*0557*3317*T*004010
ST*940*0001
W05*N*538686**001001*538686
LX*1
W01*12*CA*000100000010*VN*000100*UC*DEC0199******19991205
G69*11.500 STRUD BLUBRY
W76*56*500*LB*24*CF
SE*7*0001
GE*1*3317
IEA*1*000003438";
EdiDataReader r = new EdiDataReader();
EdiBatch ediBatch = r.FromString(edi);
//control whether you need to accept all transaction or report error if such.
AckBuilderSettings ackSettings = new AckBuilderSettings(AckValidationErrorBehavour.AcceptAll, false, 100, 200);
var ack = new AckBuilder(ackSettings);
//create FA object structure
EdiBatch ackBatch = ack.GetnerateAcknowledgment(ediBatch);
//Or create ack string/stream
string data = ack.WriteToString(ediBatch);
Console.WriteLine(data);
Console.ReadLine();
}
}
}
Will output the following 997 to console
ISA*00* *00* *ZZ*123456789012345*ZZ*ABCDEFGHIJKLMNO*171130*0400*U*00400*000000100*0*P*>
GS*FA*3111350000*7705551212*20171130*0400*200*X*004010
ST*997*0001
AK1*OW*3317
AK9*A*1*1*1
SE*4*0001
GE*1*200
IEA*1*000000100
You can control 997 behavior using following rules
public class AckBuilderSettings
{
public AckBuilderSettings(AckValidationErrorBehavour validationErrorBehavour,
bool alwaysGenerateAk2Loop,
int isaFirstControlNumber, int gsFirstControlNumber);
//On Error behavior - see below
public AckValidationErrorBehavour AckValidationErrorBehavour { get; }
//Some trading partners require AK2 loop even if group is aacepted.
public bool AlwaysGenerateAk2Loop { get; }
public int GsFirstControlNumber { get; }
public int IsaFirstControlNumber { get; }
}
public enum AckValidationErrorBehavour
{
AcceptAll = 0, //Always Accept all data (A code)
AcceptButNoteErrors = 1, //If validation errors found - accept with errors (E code)
RejectValidationErrors = 2 //reject messages with validation errors (R code)
}