/// <summary> /// Parse the transaction explicitly. /// </summary> /// <param name="unb">The UNB.</param> /// <param name="ung">The UNG.</param> /// <param name="unh">The UNH.</param> /// <returns>The type to parse to.</returns> public static TypeInfo FullTemplateFactory(UNB unb, UNG ung, UNH unh) { if (unb.INTERCHANGESENDER_2.InterchangeSenderIdentification_1 == "SPLIT1" && unh.MessageIdentifier_02.MessageType_01 == "ORDERS") { return(typeof(TSORDERSSplit).GetTypeInfo()); } if (unb.INTERCHANGESENDER_2.InterchangeSenderIdentification_1 == "INVALID1" && unh.MessageIdentifier_02.MessageType_01 == "ORDERS") { return(typeof(TSORDERSValidation).GetTypeInfo()); } if (unb.INTERCHANGESENDER_2.InterchangeSenderIdentification_1 == "CUSTOM1" && unh.MessageIdentifier_02.MessageType_01 == "ORDERS") { return(typeof(TSORDERSCustom1).GetTypeInfo()); } if (unb.INTERCHANGESENDER_2.InterchangeSenderIdentification_1 == "CUSTOM2" && unh.MessageIdentifier_02.MessageType_01 == "ORDERS") { return(typeof(TSORDERSCustom2).GetTypeInfo()); } if (unh.MessageIdentifier_02.MessageReleaseNumber_03 == "96A" && unh.MessageIdentifier_02.MessageType_01 == "ORDERS") { return(typeof(TSORDERS).GetTypeInfo()); } if (unh.MessageIdentifier_02.MessageReleaseNumber_03 == "96A" && unh.MessageIdentifier_02.MessageType_01 == "INVOIC") { return(typeof(TSINVOIC).GetTypeInfo()); } if (unh.MessageIdentifier_02.MessageReleaseNumber_03 == "96A" && unh.MessageIdentifier_02.MessageType_01 == "INVOIC") { return(typeof(TSINVOIC).GetTypeInfo()); } if (unh.MessageIdentifier_02.MessageType_01 == "PNRGOV") { return(typeof(TSPNRGOV).GetTypeInfo()); } if (unh.MessageIdentifier_02.MessageReleaseNumber_03 == "01B" && unh.MessageIdentifier_02.MessageType_01 == "INVOIC" && unh.MessageIdentifier_02.AssociationAssignedCode_05.StartsWith("EAN", System.StringComparison.Ordinal)) { return(typeof(Templates.EancomD01B.TSINVOIC).GetTypeInfo()); } throw new System.Exception(string.Format("Transaction {0} for version {1} is not supported.", unh.MessageIdentifier_02.MessageType_01, unh.MessageIdentifier_02.MessageVersionNumber_02 + unh.MessageIdentifier_02.MessageReleaseNumber_03)); }
public static TypeInfo TemplateFactory(UNB unb, UNG ung, UNH unh) { if (unh.MessageIdentifier_02.MessageType_01 == "PNRGOV") { return(typeof(TSPNRGOV).GetTypeInfo()); } throw new System.Exception(string.Format("Transaction {0} for version {1} is not supported.", unh.MessageIdentifier_02.MessageType_01, unh.MessageIdentifier_02.MessageVersionNumber_02 + unh.MessageIdentifier_02.MessageReleaseNumber_03)); }
public static TypeInfo ModifiedTypeFactory(UNB unb, UNG ung, UNH unh) { if (unh.MessageIdentifier_02.MessageReleaseNumber_03 == "96A" && unh.MessageIdentifier_02.MessageType_01 == "ORDERS") { return(typeof(TSORDERSModified).GetTypeInfo()); } throw new Exception(string.Format("Transaction {0} for version {1} is not supported.", unh.MessageIdentifier_02.MessageType_01, unh.MessageIdentifier_02.MessageVersionNumber_02 + unh.MessageIdentifier_02.MessageReleaseNumber_03)); }
protected void MontarUnb(string idEmisor, string referenciaControlIntercambio0020, bool indicadorPrueba) { var _idEmisor = CleanText(idEmisor); var refControl = CleanText(referenciaControlIntercambio0020); var unb = new UNB(new IdentificadorDeSintaxis(_identificadorSintaxis_0001, _numeroVersionSintaxis_0002), new EmisorDelIntercambio(_idEmisor, _codCalificadorIdentificacionParticipante_0007, null), new ReceptorDelIntercambio(_idReceptor_0010, _codCalificadorIdentificacionParticipante_0007, null), refControl, null, null, null, null, null, true); Segmentos.Add(unb); Mensaje += unb.getSegmento(); }
private static string BuildAck(UNB originalUnb, UNG originalUng, EdiMessage ack, int unbControlNumber = 1, int ungControlNumber = 1) { var memoryStream = new MemoryStream(); var writer = new EdifactWriter(memoryStream, Encoding.Default, Environment.NewLine); writer.Write(originalUnb.ToAckUnb(unbControlNumber.ToString())); if (originalUng != null) { writer.Write(originalUng.ToAckUng(ungControlNumber.ToString())); } writer.Write(ack); writer.Flush(); memoryStream.Position = 0; using (var reader = new StreamReader(memoryStream)) return(reader.ReadToEnd()); }
/// <summary> /// Swap the original sender and receiver and copy over the rest of the values. /// </summary> public static UNB ToAckUnb(this UNB header, string controlNumber) { var result = new UNB(); if (header.SYNTAXIDENTIFIER_1 != null) { result.SYNTAXIDENTIFIER_1 = new S001 { SyntaxIdentifier_1 = header.SYNTAXIDENTIFIER_1.SyntaxIdentifier_1, SyntaxVersionNumber_2 = header.SYNTAXIDENTIFIER_1.ServiceCodeListDirectoryVersionNumber_3 } } ; if (header.INTERCHANGERECIPIENT_3 != null) { result.INTERCHANGESENDER_2 = new S002 { InterchangeSenderIdentification_1 = header.INTERCHANGERECIPIENT_3.InterchangeRecipientIdentification_1, IdentificationCodeQualifier_2 = header.INTERCHANGERECIPIENT_3.IdentificationCodeQualifier_2, InterchangeSenderInternalIdentification_3 = header.INTERCHANGERECIPIENT_3.InterchangeRecipientInternalIdentification_3 } } ; if (header.INTERCHANGESENDER_2 != null) { result.INTERCHANGERECIPIENT_3 = new S003 { InterchangeRecipientIdentification_1 = header.INTERCHANGESENDER_2.InterchangeSenderIdentification_1, IdentificationCodeQualifier_2 = header.INTERCHANGESENDER_2.IdentificationCodeQualifier_2, InterchangeRecipientInternalIdentification_3 = header.INTERCHANGESENDER_2.InterchangeSenderInternalIdentification_3 } } ; result.DATEANDTIMEOFPREPARATION_4 = new S004 { Date_1 = DateTime.Now.Date.ToString("yyMMdd"), Time_2 = DateTime.Now.TimeOfDay.ToString("hhmm") }; result.InterchangeControlReference_5 = controlNumber; result.AcknowledgementRequest_9 = header.AcknowledgementRequest_9; result.TestIndicator_11 = header.TestIndicator_11; return(result); }
public static TypeInfo NoEnvelopeTemplateFactory(UNB unb, UNG ung, UNH unh) { if (unh.MessageIdentifier_02.MessageReleaseNumber_03 == "96A" && unh.MessageIdentifier_02.MessageType_01 == "ORDERS") { return(typeof(TSORDERS).GetTypeInfo()); } if (unh.MessageIdentifier_02.MessageReleaseNumber_03 == "96A" && unh.MessageIdentifier_02.MessageType_01 == "INVOIC") { return(typeof(TSINVOIC).GetTypeInfo()); } throw new System.Exception(string.Format("Transaction {0} for version {1} is not supported.", unh.MessageIdentifier_02.MessageType_01, unh.MessageIdentifier_02.MessageVersionNumber_02 + unh.MessageIdentifier_02.MessageReleaseNumber_03)); }
/// <summary> /// Build functional CONTRL acknowledgment using the original UNB and UNG. /// </summary> public static string BuildAck(UNB originalUnb, UNG originalUng, TSCONTRL ack, int unbControlNumber = 1, int ungControlNumber = 1) { var memoryStream = new MemoryStream(); using (var writer = new EdifactWriter(memoryStream, new EdifactWriterSettings() { Encoding = Encoding.Default, Postfix = Environment.NewLine })) { writer.Write(originalUnb.ToAckUnb(unbControlNumber.ToString())); if (originalUng != null) { writer.Write(originalUng.ToAckUng(ungControlNumber.ToString())); } writer.Write(ack); } memoryStream.Position = 0; using (var reader = new StreamReader(memoryStream)) return(reader.ReadToEnd()); }
private static void ProcessInvoice(UNB unb, UNG ung, TSINVOIC invoice) { // Do something with the invoice }
private static void ProcessPurchaseOrder(UNB unb, UNG ung, TSORDERS purchaseOrder) { // Do something with the purchase order }
protected override EdiItem Process(string segment) { EdiItem result = null; var segmentContext = new SegmentContext(segment, Separators); switch (segmentContext.Name) { case "UNA": case "UNB": case "UNG": case "UNH": case "UNE": case "UNZ": result = Flush(segment); if (result != null) { return(result); } break; } switch (segmentContext.Name) { case "UNA": break; case "UNB": var unb = ParseSegment <UNB>(segmentContext.Value, Separators); _currentUnb = unb; result = unb; break; case "UNG": result = ParseSegment <UNG>(segmentContext.Value, Separators); break; case "UNH": CurrentSegments.Add(segmentContext); CurrentMessageContext = BuildContext(); SegmentIndex = 0; PartsIndex = 0; break; case "UNT": CurrentSegments.Add(segmentContext); result = ParseSegments(); CurrentMessageContext = null; SegmentIndex = 0; PartsIndex = 0; break; case "UNE": result = ParseSegment <UNE>(segmentContext.Value, Separators); break; case "UNZ": result = ParseSegment <UNZ>(segmentContext.Value, Separators); _currentUnb = null; break; default: CurrentSegments.Add(segmentContext); break; } return(result); }
public EDIFACT() { transmitionMessages = new List <TransmitionMessage>(); Unb = new UNB(); Unz = new UNZ(); }