Esempio n. 1
0
        /// <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));
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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();
        }
Esempio n. 5
0
        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());
        }
Esempio n. 6
0
        /// <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);
        }
Esempio n. 7
0
        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));
        }
Esempio n. 8
0
        /// <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());
        }
Esempio n. 9
0
 private static void ProcessInvoice(UNB unb, UNG ung, TSINVOIC invoice)
 {
     //  Do something with the invoice
 }
Esempio n. 10
0
 private static void ProcessPurchaseOrder(UNB unb, UNG ung, TSORDERS purchaseOrder)
 {
     //  Do something with the purchase order
 }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
 public EDIFACT()
 {
     transmitionMessages = new List <TransmitionMessage>();
     Unb = new UNB();
     Unz = new UNZ();
 }