Ejemplo n.º 1
0
        private void AddWriters(Node node, NodeReader reader, BufferTree tree, QueueIndex queue)
        {
            if (node.Index.Count > 0)
            {
                FieldWriter writer = new FieldWriter(node)
                {
                    BufferIndex = node.Index.ToArray(),
                    NamePart    = this.GetNamePart(node, queue, tree),
                    Queue       = queue,
                };

                reader.Writers.Add(writer);
                tree.Fields.Add(writer);

                if (queue != null && queue.Type == RelationQueueType.Cached)
                {
                    CacheWriter cacheWriter = new CacheWriter(node)
                    {
                        BufferIndex = writer.BufferIndex.First(),
                        CacheIndex  = queue.Cache.Count,
                        Queue       = queue,
                    };

                    queue.Cache.Add(cacheWriter);
                }
            }

            if (node.Item != null || node.Metadata.HasFlag(RelationMetadataFlags.List | RelationMetadataFlags.Recursive))
            {
                QueueIndex prevQueue = tree.Queues.LastOrDefault()?.Index;
                QueueIndex nextQueue = this.CreateIndex(node, tree);

                QueueWriter writer = new QueueWriter(node)
                {
                    NamePart = this.GetNamePart(node.Item ?? node, queue, tree),
                    Queue    = queue,
                    Next     = nextQueue,
                };

                if ((node.Item ?? node).Metadata.HasFlag(RelationMetadataFlags.Recursive))
                {
                    nextQueue.Type = RelationQueueType.Recursive;
                }
                else if (prevQueue != null && !prevQueue.List.Identity.Equals(nextQueue.List.Owner.Parent?.Identity))
                {
                    nextQueue.Type = RelationQueueType.Cached;
                }
                else if (prevQueue != null && prevQueue.Type == RelationQueueType.Cached)
                {
                    nextQueue.Type = RelationQueueType.Cached;
                }

                reader.Writers.Add(writer);

                if (node.Item != null)
                {
                    this.CreateQueue(node.Item, tree, nextQueue);
                }
            }
        }
Ejemplo n.º 2
0
        public void FieldWriter()
        {
            FieldWriter writer = new FieldWriter(this.output.Language.CastTo <BaseLanguage>());

            writer.Write(new FieldTemplate(null, "test", Code.Type("type")), this.output);
            Assert.AreEqual("private type test;", this.output.ToString());
        }
Ejemplo n.º 3
0
        public void CheckDateTime()
        {
            MemoryStream buffer        = new MemoryStream();
            IFieldWriter writer        = new FieldWriter(buffer);
            IFieldReader reader        = new FieldReader(buffer);
            DateTime     referenceTime = DateTime.Now; //we convert to UTC during serialization, we want local time.

            buffer.Position = 0;
            writer.Write(referenceTime);
            Assert.AreEqual(12, buffer.Position);
            writer.Write(referenceTime.AddTicks(1));
            Assert.AreEqual(16, buffer.Position);
            writer.Write(referenceTime.AddMilliseconds(50));
            Assert.AreEqual(22, buffer.Position);
            writer.Write(referenceTime.AddHours(1));
            Assert.AreEqual(31, buffer.Position);
            writer.Write(referenceTime.AddDays(1));
            Assert.AreEqual(40, buffer.Position);
            buffer.Position = 0;
            Assert.AreEqual(referenceTime, reader.ReadDateTime());
            Assert.AreEqual(referenceTime.AddTicks(1), reader.ReadDateTime());
            Assert.AreEqual(referenceTime.AddMilliseconds(50), reader.ReadDateTime());
            Assert.AreEqual(referenceTime.AddHours(1), reader.ReadDateTime());
            Assert.AreEqual(referenceTime.AddDays(1), reader.ReadDateTime());
        }
        public void CheckUInt64Array()
        {
            MemoryStream buffer = new MemoryStream();
            IFieldWriter writer = new FieldWriter(buffer);
            IFieldReader reader = new FieldReader(buffer);

            UInt64[] array1 = new UInt64[] {};
            UInt64[] array2 = new UInt64[] { 1 };
            UInt64[] array3 = new UInt64[] { 0, 0, 0, 0, 0, 0 };
            UInt64[] array4 = new UInt64[] { 0, 1, 2, 3, 4, 5 };
            UInt64[] array5 = new UInt64[] { 0, 1, 1, 2, 2, 2 };
            UInt64[] array6 = new UInt64[] { 0, 1, 1, 2, 2, 2, 3 };
            writer.Write(array1);
            writer.Write(array2);
            writer.Write(array3);
            writer.Write(array4);
            writer.Write(array5);
            writer.Write(array6);
            buffer.Position = 0;
            array1.CompareArray(reader.ReadUInt64Array());
            array2.CompareArray(reader.ReadUInt64Array());
            array3.CompareArray(reader.ReadUInt64Array());
            array4.CompareArray(reader.ReadUInt64Array());
            array5.CompareArray(reader.ReadUInt64Array());
            array6.CompareArray(reader.ReadUInt64Array());
        }
Ejemplo n.º 5
0
        // static sbyte n_ByteValueExact (IntPtr jnienv, IntPtr native__this)
        // {
        //  var __this = global::Java.Lang.Object.GetObject<Android.Icu.Math.BigDecimal> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
        //  return __this.ByteValueExact ();
        // }
        public MethodCallback(GenBase type, Method method, CodeGenerationOptions options, string propertyName, bool isFormatted)
        {
            this.type   = type;
            this.method = method;

            property_name = propertyName;
            is_formatted  = isFormatted;
            opt           = options;

            delegate_field  = new MethodCallbackDelegateField(method, options);
            delegate_getter = new GetDelegateHandlerMethod(method, options);

            Name       = "n_" + method.Name + method.IDSignature;
            ReturnType = new TypeReferenceWriter(method.RetVal.NativeType);

            IsStatic  = true;
            IsPrivate = method.IsInterfaceDefaultMethod;

            if (!string.IsNullOrWhiteSpace(method.Deprecated))
            {
                Attributes.Add(new ObsoleteAttr());
            }

            SourceWriterExtensions.AddSupportedOSPlatform(Attributes, method, opt);

            Parameters.Add(new MethodParameterWriter("jnienv", TypeReferenceWriter.IntPtr));
            Parameters.Add(new MethodParameterWriter("native__this", TypeReferenceWriter.IntPtr));

            foreach (var p in method.Parameters)
            {
                Parameters.Add(new MethodParameterWriter(options.GetSafeIdentifier(p.UnsafeNativeName), new TypeReferenceWriter(p.NativeType)));
            }
        }
Ejemplo n.º 6
0
        public void CheckBoolArray()
        {
            MemoryStream buffer = new MemoryStream();
            IFieldWriter writer = new FieldWriter(buffer);
            IFieldReader reader = new FieldReader(buffer);

            bool[][] list = new bool[][] { new bool[0], new bool[1], new bool[2], new bool[31], new bool[32], new bool[33],
                                           new bool[63], new bool[64], new bool[65], new bool[127], new bool[128], new bool[129] };
            Random rand     = new Random(0);
            int    bitCount = 0;

            for (int i = 0; i < list.Length; i++)
            {
                bool[] current = list[i];
                bitCount += current.Length;
                for (int j = 0; j < current.Length; j++)
                {
                    current[j] = rand.NextDouble() >= 0.5;
                }
                writer.Write(current);
            }

            Assert.AreEqual(675, bitCount);
            Assert.AreEqual(buffer.Length, buffer.Position);
            buffer.Position = 0;
            for (int i = 0; i < list.Length; i++)
            {
                bool[] current = list[i];
                bool[] actual  = reader.ReadBoolArray();
                CompareArray(current, actual);
            }
            Assert.AreEqual(buffer.Length, buffer.Position);
        }
Ejemplo n.º 7
0
        public void CheckDoubleArray()
        {
            MemoryStream buffer = new MemoryStream();
            IFieldWriter writer = new FieldWriter(buffer);
            IFieldReader reader = new FieldReader(buffer);

            Double[] array1 = new Double[] {};
            Double[] array2 = new Double[] { 1 };
            Double[] array3 = new Double[] { 0, 0, 0, 0, 0, 0 };
            Double[] array4 = new Double[] { 0, 1, 2, 3, 4, 5 };
            Double[] array5 = new Double[] { 0, 1, 1, 2, 2, 2 };
            Double[] array6 = new Double[] { 0, 1, 1, 2, 2, 2, 3 };
            writer.Write(array1);
            writer.Write(array2);
            writer.Write(array3);
            writer.Write(array4);
            writer.Write(array5);
            writer.Write(array6);
            buffer.Position = 0;
            CompareArray(array1, reader.ReadDoubleArray());
            CompareArray(array2, reader.ReadDoubleArray());
            CompareArray(array3, reader.ReadDoubleArray());
            CompareArray(array4, reader.ReadDoubleArray());
            CompareArray(array5, reader.ReadDoubleArray());
            CompareArray(array6, reader.ReadDoubleArray());
        }
        public void CheckDateTime()
        {
            MemoryStream buffer        = new MemoryStream();
            IFieldWriter writer        = new FieldWriter(buffer);
            IFieldReader reader        = new FieldReader(buffer);
            var          referenceTime = new DateTime(1973, 6, 25, 8, 30, 12, DateTimeKind.Utc); //UTC to ensure tests are portable

            buffer.Position = 0;
            writer.Write(referenceTime);
            Assert.AreEqual(11, buffer.Position,
                            "Serialized value isn't the expected length.  Position is: {1}, expected {0}.\r\nSerialized Value: {2}",
                            buffer.Position, 11, buffer.ToArray().ToDisplayString());

            writer.Write(referenceTime.AddTicks(1));
            Assert.AreEqual(14, buffer.Position);
            writer.Write(referenceTime.AddMilliseconds(50));
            Assert.AreEqual(19, buffer.Position);
            writer.Write(referenceTime.AddHours(1));
            Assert.AreEqual(27, buffer.Position);
            writer.Write(referenceTime.AddDays(1));
            Assert.AreEqual(35, buffer.Position);
            buffer.Position = 0;
            Assert.AreEqual(referenceTime, reader.ReadDateTime());
            Assert.AreEqual(referenceTime.AddTicks(1), reader.ReadDateTime());
            Assert.AreEqual(referenceTime.AddMilliseconds(50), reader.ReadDateTime());
            Assert.AreEqual(referenceTime.AddHours(1), reader.ReadDateTime());
            Assert.AreEqual(referenceTime.AddDays(1), reader.ReadDateTime());
        }
Ejemplo n.º 9
0
        public void CheckString()
        {
            IFieldWriter writer = new FieldWriter();

            writer.Write((string)null);
            Assert.AreEqual(2, writer.Position, "Expected position ");

            writer.Write("");
            Assert.AreEqual(3, writer.Position, "Expected position ");

            writer.Write(" ");
            Assert.AreEqual(5, writer.Position, "Expected position ");

            writer.Write("Hello");
            Assert.AreEqual(11, writer.Position, "Expected position ");

            writer.Write("Hello");
            Assert.AreEqual(17, writer.Position, "Expected position ");

            writer.Write("Hi");
            Assert.AreEqual(20, writer.Position, "Expected position ");

            IFieldReader reader = new FieldReader(writer.ToArray());

            Assert.AreEqual(null, reader.ReadString(), "Expected string ");
            Assert.AreEqual("", reader.ReadString(), "Expected string ");
            Assert.AreEqual(" ", reader.ReadString(), "Expected string ");
            Assert.AreEqual("Hello", reader.ReadString(), "Expected string ");
            Assert.AreEqual("Hello", reader.ReadString(), "Expected string2 ");
            Assert.AreEqual("Hi", reader.ReadString(), "Expected string ");
        }
Ejemplo n.º 10
0
        private static void WriteLenovoAsn(TSDESADV asn, FieldWriter writer)
        {
            writer.WL("MessageReferenceNumber_01", asn.UNH.MessageReferenceNumber_01);
            foreach (var dtm in asn.DTM)
            {
                writer.WL(MapLenovoDate.TryGetValue(dtm.DATETIMEPERIOD_01.Datetimeperiodqualifier_01, out var d) ? d :
                          dtm.DATETIMEPERIOD_01.Datetimeperiodqualifier_01 + " search here http://www.stylusstudio.com/edifact/D97A/2380.htm"
                          , dtm.DATETIMEPERIOD_01.Datetimeperiod_02);
            }
            foreach (var rff in asn.RFFLoop)
            {
                writer.WL(
                    MapLenovoRff.TryGetValue(rff.RFF.REFERENCE_01.Referencequalifier_01, out var rffn) ? rffn :
                    rff.RFF.REFERENCE_01.Referencequalifier_01 + " search here http://www.stylusstudio.com/edifact/D97A/1153.htm"
                    , rff.RFF.REFERENCE_01.Referencenumber_02);
            }

            foreach (var nad in asn.NADLoop)
            {
                writer.WL(MapLenovoParty.TryGetValue(nad.NAD.Partyqualifier_01, out var d) ? d :
                          nad.NAD.Partyqualifier_01 + " search here http://www.stylusstudio.com/edifact/D97A/2380.htm"
                          , nad.NAD.PARTYNAME_04.Partyname_01);
            }

            foreach (var csp in asn.CPSLoop)
            {
                foreach (var pac in csp.PACLoop)
                {
                    foreach (var pci in pac.PCILoop)
                    {
                        writer.WL("MARKS & LABELS", pci.PCI.MARKSLABELS_02.Shippingmarks_01);
                    }
                }

                writer.WL("------ lines -----", "");
                foreach (var lin in csp.LINLoop)
                {
                    writer.WL("Lineitemnumber_01", lin.LIN.Lineitemnumber_01);
                    writer.WL("item type", lin.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01);
                    foreach (var qty in lin.QTY)
                    {
                        writer.WL("despatch quantity", qty.QUANTITYDETAILS_01.Quantity_02);
                    }

                    foreach (var loc in lin.LOCLoop)
                    {
                        writer.WL("LOCATION IDENTIFICATION/place location", loc.LOC.LOCATIONIDENTIFICATION_02.Placelocation_04);
                    }

                    foreach (var pci in lin.PCILoop)
                    {
                        if (pci.PCI.MARKSLABELS_02 != null)
                        {
                            writer.WL("MARKS & LABELS", pci.PCI.MARKSLABELS_02.Shippingmarks_01);
                        }
                    }
                }
            }
        }
Ejemplo n.º 11
0
        private long DateTimeOffsetSerializedLength()
        {
            MemoryStream buffer = new MemoryStream();
            IFieldWriter writer = new FieldWriter(buffer);

            buffer.Position = 0;
            writer.Write(DateTimeOffset.Now);
            return(buffer.Position);
        }
Ejemplo n.º 12
0
        public void FieldDefaultValue()
        {
            FieldTemplate template = new FieldTemplate(null, "test", Code.Type("type"));

            template.DefaultValue = Code.String("default");
            FieldWriter writer = new FieldWriter(this.output.Language.CastTo <BaseLanguage>());

            writer.Write(template, this.output);
            Assert.AreEqual("private type test = \"default\";", this.output.ToString());
        }
Ejemplo n.º 13
0
 public FluentWriter NewField(string value, Action<FieldWriter> func)
 {
     if (func == null)
     {
         _builder.Append(value ?? string.Empty);
         return this;
     }
     var fieldWriter = new FieldWriter(this, _builder, value);
     func(fieldWriter);
     fieldWriter.Close();
     return this;
 }
Ejemplo n.º 14
0
        private static void CheckDouble(double expectedValue, int expectedSize)
        {
            IFieldWriter writer = new FieldWriter();

            writer.Write(expectedValue);

            IFieldReader reader      = new FieldReader(writer.ToArray());
            double       actualValue = reader.ReadDouble();

            Assert.AreEqual(expectedValue, actualValue, "Expected deserialized value ");
            Assert.AreEqual(expectedSize, writer.Position, "Unexpected size for {0} ", expectedValue);
        }
        public void TestProtocolVersion1()
        {
            // Test with protocol version 1.0
            var writer = new FieldWriter(new MemoryStream(), new UniqueStringList(), 1, 0);

            /*
             * These first few writes are identical to TestStringCompressionDisabled
             */

            // Test that a null string takes only one byte
            writer.Write((string)null);
            Assert.AreEqual(1, writer.Position, "Expected position ");

            // Test that an empty string takes 2 bytes
            writer.Write("");
            Assert.AreEqual(3, writer.Position, "Expected position ");

            // Test that passing a single character string takes 3 bytes
            writer.Write(" ");
            Assert.AreEqual(6, writer.Position, "Expected position ");

            // Test that passing a two character string takes 4 bytes
            writer.Write("Hi");
            Assert.AreEqual(10, writer.Position, "Expected position ");

            // Test that 5 characters takes 7 bytes
            writer.Write("Hello");
            Assert.AreEqual(17, writer.Position, "Expected position ");

            /*
             * Now, let's try some repeated strings
             */

            // Test that a second occurence should only take 1 byte with compression enabled
            writer.Write("Hello");
            Assert.AreEqual(18, writer.Position, "Expected position ");

            writer.Write("Hi");
            Assert.AreEqual(19, writer.Position, "Expected position ");

            // Verify that the strings read back are the same as those written
            IFieldReader reader = new FieldReader(new MemoryStream(writer.ToArray()), new UniqueStringList(), 1, 0);

            Assert.AreEqual(null, reader.ReadString());
            Assert.AreEqual("", reader.ReadString());
            Assert.AreEqual(" ", reader.ReadString());
            Assert.AreEqual("Hi", reader.ReadString());
            Assert.AreEqual("Hello", reader.ReadString());
            Assert.AreEqual("Hello", reader.ReadString());
            Assert.AreEqual("Hi", reader.ReadString());
        }
Ejemplo n.º 16
0
        public FluentWriter NewField(string value, Action <FieldWriter> func)
        {
            if (func == null)
            {
                _builder.Append(value ?? string.Empty);
                return(this);
            }

            var fieldWriter = new FieldWriter(this, _builder, value);

            func(fieldWriter);
            fieldWriter.Close();
            return(this);
        }
Ejemplo n.º 17
0
        private static void CheckUInt64(ulong expectedValue, int expectedSize)
        {
            IFieldWriter writer = new FieldWriter();

            writer.Write(expectedValue);

            IFieldReader reader      = new FieldReader(writer.ToArray());
            ulong        actualValue = reader.ReadUInt64();

            Assert.AreEqual(expectedValue, actualValue, "Expected deserialized value ");
            if (expectedSize > 0)
            {
                Assert.AreEqual(expectedSize, writer.Position, "Unexpected size for {0} ", expectedValue);
            }
        }
Ejemplo n.º 18
0
        private static void CheckInt32(int expectedValue, int expectedSize)
        {
            IFieldWriter writer = new FieldWriter(new MemoryStream());

            writer.Write(expectedValue);

            IFieldReader reader      = new FieldReader(writer.ToArray());
            int          actualValue = reader.ReadInt32();

            Assert.AreEqual(expectedValue, actualValue, "Expected deserialized value ");
            if (expectedSize > 0)
            {
                Assert.AreEqual(expectedSize, writer.Position, "Unexpected size for {0} ", expectedValue);
            }
        }
Ejemplo n.º 19
0
        public void Basics()
        {
            var field = new FieldWriter {
                Name = "MyField", IsPublic = true, Type = TypeReferenceWriter.IntPtr
            };

            var sw     = new StringWriter();
            var writer = new CodeWriter(sw);

            field.Write(writer);

            var expected = @"public IntPtr MyField;
";

            Assert.AreEqual(expected, sw.ToString());
        }
Ejemplo n.º 20
0
        public void CheckGuid()
        {
            MemoryStream buffer = new MemoryStream();
            IFieldWriter writer = new FieldWriter(buffer);
            IFieldReader reader = new FieldReader(buffer);

            foreach (Guid expected in new Guid[]
            {
                Guid.Empty, Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid()
            })
            {
                buffer.Position = 0;
                writer.Write(expected);
                buffer.Position = 0;
                Guid actual = reader.ReadGuid();
                Assert.AreEqual(expected, actual);
            }
        }
        public void TestProtocolVersion2()
        {
            // Test with protocol version 2.0
            var writer = new FieldWriter(new MemoryStream(), new UniqueStringList(), 2, 0);

            // Test that a null string takes only one byte
            writer.Write((string)null);
            Assert.AreEqual(2, writer.Position, "Expected position ");

            // Test that an empty string takes 2 bytes
            writer.Write("");
            Assert.AreEqual(3, writer.Position, "Expected position ");

            // Test that passing a single character string takes 2 bytes
            writer.Write(" ");
            Assert.AreEqual(5, writer.Position, "Expected position ");

            // Test that passing a two character string takes 3 bytes
            writer.Write("Hi");
            Assert.AreEqual(8, writer.Position, "Expected position ");

            // Test that 5 characters takes 6 bytes
            writer.Write("Hello");
            Assert.AreEqual(14, writer.Position, "Expected position ");

            // Test that a second occurence still takes 6 bytes
            writer.Write("Hello");
            Assert.AreEqual(20, writer.Position, "Expected position ");

            // Likewise, a second occurence of an earlier string still takes a much space
            writer.Write("Hi");
            Assert.AreEqual(23, writer.Position, "Expected position ");

            // Verify that the strings read back are the same as those written
            IFieldReader reader = new FieldReader(new MemoryStream(writer.ToArray()), null, 2, 0);

            Assert.AreEqual(null, reader.ReadString());
            Assert.AreEqual("", reader.ReadString());
            Assert.AreEqual(" ", reader.ReadString());
            Assert.AreEqual("Hi", reader.ReadString());
            Assert.AreEqual("Hello", reader.ReadString());
            Assert.AreEqual("Hello", reader.ReadString());
            Assert.AreEqual("Hi", reader.ReadString());
        }
Ejemplo n.º 22
0
        public void CheckTimeSpan()
        {
            MemoryStream buffer = new MemoryStream();
            IFieldWriter writer = new FieldWriter(buffer);
            IFieldReader reader = new FieldReader(buffer);

            foreach (ulong value in new UInt64[]
            {
                0x0, 0x1, 0x9999, 0xffff, 0xffffffff, 0xffffffffffff,
                0xffffffffffffffff, 0x7fffffffffffffff, 0x9999999999999999
            })
            {
                buffer.Position = 0;
                TimeSpan expected = new TimeSpan((long)value);
                writer.Write(expected);
                buffer.Position = 0;
                TimeSpan actual = reader.ReadTimeSpan();
                Assert.AreEqual(expected, actual);
            }
        }
Ejemplo n.º 23
0
        private static void WriteLenovoOrder(TSORDERS order, FieldWriter writer)
        {
            writer.WL("MessageReferenceNumber_01", order.UNH.MessageReferenceNumber_01);
            foreach (var dtm in order.DTM)
            {
                writer.WL(MapLenovoDate.TryGetValue(dtm.DATETIMEPERIOD_01.Datetimeperiodqualifier_01, out var d) ? d :
                          dtm.DATETIMEPERIOD_01.Datetimeperiodqualifier_01 + " search here http://www.stylusstudio.com/edifact/D97A/2380.htm"
                          , dtm.DATETIMEPERIOD_01.Datetimeperiod_02);
            }

            writer.WL(" ", "");
            if (order.FTX != null)
            {
                foreach (var ftx in order.FTX)
                {
                    writer.WL("delivery instruction", ftx.TEXTLITERAL_04.Freetext_01);
                }
            }
            writer.WL(" ", "");
            foreach (var rff in order.RFFLoop)
            {
                writer.WL(
                    MapLenovoRff.TryGetValue(rff.RFF.REFERENCE_01.Referencequalifier_01, out var rffn) ? rffn :
                    rff.RFF.REFERENCE_01.Referencequalifier_01 + " search here http://www.stylusstudio.com/edifact/D97A/1153.htm"
                    , rff.RFF.REFERENCE_01.Referencenumber_02);
            }
            writer.WL(" ", "");

            foreach (var nad in order.NADLoop)
            {
                writer.WL(MapLenovoParty.TryGetValue(nad.NAD.Partyqualifier_01, out var d) ? d :
                          nad.NAD.Partyqualifier_01 + " search here http://www.stylusstudio.com/edifact/D97A/2380.htm"
                          , nad.NAD.PARTYIDENTIFICATIONDETAILS_02?.Partyididentification_01);

                writer.WL("Nameandaddressline_01", nad.NAD.NAMEANDADDRESS_03?.Nameandaddressline_01);
                writer.WL("Nameandaddressline_02", nad.NAD.NAMEANDADDRESS_03?.Nameandaddressline_02);
                writer.WL("Nameandaddressline_03", nad.NAD.NAMEANDADDRESS_03?.Nameandaddressline_03);

                writer.WL("Streetandnumberpobox_01", nad.NAD.STREET_05?.Streetandnumberpobox_01);
                writer.WL("Streetandnumberpobox_02", nad.NAD.STREET_05?.Streetandnumberpobox_02);
                writer.WL("Streetandnumberpobox_03", nad.NAD.STREET_05?.Streetandnumberpobox_03);

                writer.WL("Cityname_06", nad.NAD.Cityname_06);
                writer.WL("Postcodeidentification_08", nad.NAD.Postcodeidentification_08);
                writer.WL("Countrycoded_09", nad.NAD.Countrycoded_09);
                writer.WL(" ", "");
            }

            foreach (var tdt in order.TDTLoop)
            {
                writer.WL("Carrieridentification_01", tdt.TDT.CARRIER_05?.Carrieridentification_01);
                writer.WL("Carriername_04", tdt.TDT.CARRIER_05?.Carriername_04);
                writer.WL("Idofmeansoftransportidentification_01", tdt.TDT.TRANSPORTIDENTIFICATION_08?.Idofmeansoftransportidentification_01);
            }

            writer.WL("------ lines -----", "");
            foreach (var lin in order.LINLoop)
            {
                writer.WL("Lineitemnumber_01", lin.LIN.Lineitemnumber_01);
                writer.WL("item type", lin.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01);
                foreach (var qty in lin.QTY)
                {
                    writer.WL("despatch quantity", qty.QUANTITYDETAILS_01.Quantity_02);
                }

                foreach (var loc in lin.LOCLoop)
                {
                    writer.WL("Storage Location", loc.LOC.LOCATIONIDENTIFICATION_02.Placelocation_04);
                }

                if (lin.GIN != null)
                {
                    foreach (var gin in lin.GIN)
                    {
                        writer.WL("serial number", gin.IDENTITYNUMBERRANGE_02.Identitynumber_01);
                    }
                }

                if (lin.GIR != null)
                {
                    foreach (var gir in lin.GIR)
                    {
                        writer.WL("package", gir.IDENTIFICATIONNUMBER_02.Identitynumber_01);
                    }
                }
                writer.WL(" ", "");
            }
        }
Ejemplo n.º 24
0
        //-----------------------------------------------------------------------------------------------------------------------------------------------------

        internal void AddWriter(FieldWriter writer)
        {
            m_Writers.Add(writer);
        }
Ejemplo n.º 25
0
 public FieldWriter NewField()
 {
     var field = new FieldWriter(this, _builder, string.Empty);
     return field;
 }
Ejemplo n.º 26
0
        static void Main(string[] args)
        {
            var root = @"C:\work\dev\edi";
            var dddd = LenovoCatalogClient.GetChangedLenovoMaterials().Result;

            return;

            // InventoryRecoSender.SendInventoryForReceivings(Path.Combine(root, @"sample\lenovo\to_respond")).Wait();
            // return;
            //     X12214Writer.Write214(Path.Combine(root, "lw_sample\\214.txt"));
            // write goods received

            /*     DespatchAdviceWriter.WriteEdiFactAsnResponse(
             *       Path.Combine(root, @"sample\lenovo\to_respond"),
             *       Path.Combine(Path.Combine(root, @"sample\lenovo\response")))
             *       .Wait();
             *
             *   return;*/
            //translate edi fact
            //       EdiFactTranslator.TranslateEdiFact(Path.Combine(root, @"sample\lenovo"),
            //            Path.Combine(root, @"sample\lenovo\translated"));

            /*    X12Translator.TranslateX12(Path.Combine(root, @"lw_sample"),
             *      Path.Combine(root, @"lw_sample\translated"),
             *      Assembly.GetAssembly(typeof(TS856)));*/
            // write wm asn
            //  var asn = new AsnWriter();
            //  asn.WriteAsn(Path.Combine(root, Guid.NewGuid().ToString("D")));

            #region wm ack

            /*
             *        var settings = new AckSettings
             *       {
             *           AckHandler = (s, a) =>
             *           {
             *               var tsTa1 = a.Message as TSTA1;
             *               var ts997 = a.Message as TS997;
             *
             *              // ts997.AK1.FunctionalIdentifierCode_01 = "A";
             *               ts997.AK9.FunctionalGroupAcknowledgeCode_01 = "A";
             *               ts997.AK9.NumberofAcceptedTransactionSets_04 = ts997.AK9.NumberofReceivedTransactionSets_03;
             *               foreach (var aa in ts997.AK2Loop1)
             *               {
             *                   aa.AK5.TransactionSetAcknowledgmentCode_01 = "A";
             *                   aa.AK3Loop1 = null;
             *               }
             *               if (tsTa1 != null)
             *               {
             *                   // a.Message is TA1
             *               }
             *
             *               if (ts997 != null)
             *               {
             *                   //  Inspect the acknowledgment
             *                   var ackCode = ts997.AK9.FunctionalGroupAcknowledgeCode_01;
             *
             *                   var ack = AckBuilders.BuildAck(a.InterchangeHeader, a.GroupHeader, ts997, AckVersion.X12_997);
             *                   Debug.Write(ack);
             *               }
             *           },
             *           MessageHandler = (s, a) =>
             *           {
             *               if (!a.ErrorContext.HasErrors)
             *               {
             *                   // do something with the message a.Message
             *                   Debug.WriteLine("Message {0} with control number {1} is valid.", a.ErrorContext.Name, a.ErrorContext.ControlNumber);
             *               }
             *
             *               a.ErrorContext.Errors.Clear();
             *               a.ErrorContext.HasErrors = false;
             *           },
             *           AckVersion = AckVersion.X12_997,
             *           // Turn off AK2 for valid messages to reduce size
             *           GenerateForValidMessages = false
             *       };
             *
             *
             *       //TL_6637eb02-75b4-4b3a-9f32-5b2e7059d920.edi
             *       var edi = File.OpenRead(@"C:\work\dev\edi\TL_42e0c5bf-ac84-441c-b9ca-0ccbe6170880.edi");
             *       using (var ackMan = new EdiFabric.Plugins.Acknowledgments.X12.AckMan(settings))
             *       {
             *           using (var ediReader = new X12Reader(edi, mc =>
             *           {
             *               // return Assembly.GetAssembly(typeof(EdiFabric.Templates.EdifactD96A.ADR));
             *               return Assembly.GetAssembly(typeof(EdiFabric.Templates.X12004010.AAA));
             *           }))
             *           {
             *               while (ediReader.Read())
             *                   ackMan.Publish(ediReader.Item);
             *           }
             *       }
             *       return;*/

            #endregion

            #region wm staff

            using (var output = File.CreateText(Path.Combine(root, "stores.txt")))
            {
                //*.edi
                Dictionary <string, Loop_N1_816_2> ids = new Dictionary <string, Loop_N1_816_2>();
                foreach (var file in Directory.EnumerateFiles(root, "00000*").Select(f => new FileInfo(f))
                         .OrderBy(f =>
                                  f.Name == "000005_X12_005010_816_OUT-7.011390366.523604" ? new DateTime() : f.CreationTimeUtc))
                {
                    // using (EdifactReader reader = new EdifactReader(new FileStream(Path.Combine(root, file), FileMode.Open),
                    using (X12Reader reader = new X12Reader(
                               new FileStream(Path.Combine(root, file.Name), FileMode.Open),
                               mc =>
                    {
                        // return Assembly.GetAssembly(typeof(EdiFabric.Templates.EdifactD96A.ADR));
                        return(Assembly.GetExecutingAssembly());
                    }))
                    {
                        var ediItems = reader.ReadToEnd().ToList();

                        if (ediItems.Any(i => i is EdiFabric.Core.Model.Edi.ErrorContexts.ReaderErrorContext))
                        {
                            Console.WriteLine(file + " " + ediItems.First(i =>
                                                                          i is EdiFabric.Core.Model.Edi.ErrorContexts.ReaderErrorContext));
                        }


                        foreach (var ediItem in ediItems.Where(i => i is EdiFabric.Templates.X12005010.TS816)
                                 .Cast <EdiFabric.Templates.X12005010.TS816>())
                        {
                            foreach (var h in ediItem.HLLoop)
                            {
                                /*WL("id", h.Id.ToString());
                                 * WL("HierarchicalChildCode_04", h.HL.HierarchicalChildCode_04);
                                 * WL("HierarchicalIDNumber_01", h.HL.HierarchicalIDNumber_01);
                                 * WL("HierarchicalLevelCode_03", h.HL.HierarchicalLevelCode_03);
                                 * WL("HierarchicalParentIDNumber_02", h.HL.HierarchicalParentIDNumber_02);
                                 *
                                 */

                                foreach (var n in h.N1Loop)
                                {
                                    /* WL("EntityIdentifierCode_01", n.N1.EntityIdentifierCode_01);
                                     * WL("Id", n.N1.Id.ToString());
                                     * WL("IdentificationCodeQualifier_03", n.N1.IdentificationCodeQualifier_03);
                                     * WL("IdentificationCode_04", n.N1.IdentificationCode_04);*/
                                    if (!ids.ContainsKey(n.N1.IdentificationCode_04))
                                    {
                                        ids.Add(n.N1.IdentificationCode_04, n);
                                    }
                                    else
                                    {
                                        ids[n.N1.IdentificationCode_04] = n;
                                    }

                                    /* WL("Name_02", n.N1.Name_02);
                                     *
                                     * if (n.N3 != null)
                                     * {
                                     *   foreach (var n3 in n.N3)
                                     *   {
                                     *       WL("AddressInformation_01", n3.AddressInformation_01);
                                     *       WL("AddressInformation_02", n3.AddressInformation_02);
                                     *   }
                                     * }
                                     *
                                     * WL("CityName_01", n.N4.CityName_01);
                                     * WL("CountryCode_04", n.N4.CountryCode_04);
                                     * WL("PostalCode_03", n.N4.PostalCode_03);
                                     *
                                     *
                                     * if (n.REF != null)
                                     * {
                                     *   foreach (var r in n.REF)
                                     *   {
                                     *
                                     *       WL("ref:Description_03", r.Description_03);
                                     *       WL("ref:ReferenceIdentificationQualifier_01", r.ReferenceIdentificationQualifier_01);
                                     *       WL("ref:ReferenceIdentification_02", r.ReferenceIdentification_02);
                                     *       if (r.ReferenceIdentifier_04 != null)
                                     *       {
                                     *           WL("ref:" + r.ReferenceIdentifier_04.ReferenceIdentificationQualifier_01,
                                     *               r.ReferenceIdentifier_04.ReferenceIdentification_02);
                                     *           WL("ref:" + r.ReferenceIdentifier_04.ReferenceIdentificationQualifier_03,
                                     *               r.ReferenceIdentifier_04.ReferenceIdentification_04);
                                     *           WL("ref:" + r.ReferenceIdentifier_04.ReferenceIdentificationQualifier_05,
                                     *               r.ReferenceIdentifier_04.ReferenceIdentification_06);
                                     *       }
                                     *
                                     *   }
                                     * }
                                     *
                                     * if (n.PER != null)
                                     * {
                                     *   foreach (var per in n.PER)
                                     *   {
                                     *       WL("communication:ContactFunctionCode_01", per.ContactFunctionCode_01);
                                     *       WL("communication:ContactFunctionCode_01", per.ContactInquiryReference_09);
                                     *       WL("communication:Name_02", per.Name_02);
                                     *       WL("communication:" + per.CommunicationNumberQualifier_03,
                                     *           per.CommunicationNumber_04);
                                     *       WL("communication:" + per.CommunicationNumberQualifier_05,
                                     *           per.CommunicationNumber_06);
                                     *       WL("communication:" + per.CommunicationNumberQualifier_07,
                                     *           per.CommunicationNumber_08);
                                     *
                                     *   }
                                     * }
                                     * }
                                     *
                                     * WL("------ hl ------", "");*/
                                }
                            }
                        }
                    }
                }

                /*  WT(
                 *        "INSERT INTO table (IdentificationCode, StoreNumber, Phone, CountryCode, StateCode, CityName, PostalCode, AddressLine1, AddressLine2, AddressLine3, StoreName)", true);
                 *    WT("VALUES");
                 *    foreach (var id in ids)
                 *    {
                 *        var n = id.Value;
                 *        var sn = n.REF?.FirstOrDefault(r => r.ReferenceIdentificationQualifier_01 == "ST")
                 *            ?.ReferenceIdentification_02;
                 *        if (sn == null || n.N3 == null)
                 *            continue;
                 *        WT("('" + n.N1.IdentificationCode_04 + "',");
                 *        WT("'" + sn + "',");
                 *        WT("'" + n.PER?.FirstOrDefault(r => r.CommunicationNumberQualifier_03 == "TE")?.CommunicationNumber_04 + "',");
                 *            // WT("'" + n.N3.First().AddressInformation_01 + "',");
                 *        WT("'" + n.N4.CountryCode_04 + "',");
                 *        WT("'" + n.N4.StateorProvinceCode_02 + "',");
                 *        WT("'" + n.N4.CityName_01 + "',");
                 *        WT("'" + n.N4.PostalCode_03 + "',");
                 *        WT("'" + n.N3.First().AddressInformation_01 + "',");
                 *        WT(string.IsNullOrEmpty(n.N3.First().AddressInformation_02) ? "null," :
                 *            "'" + n.N3.First().AddressInformation_02 + "',");
                 *        WT("null,");
                 *        WT("'" + n.N1.Name_02 + "'),", true);
                 *
                 *
                 *    }
                 * return;*/

                foreach (var file1 in Directory.EnumerateFiles(root, "*RECONGROUP-925485US00-20200609114554603_519865969"))
                {
                    // using (EdifactReader reader = new EdifactReader(new FileStream(Path.Combine(root, file), FileMode.Open),
                    using (X12Reader reader = new X12Reader(new FileStream(Path.Combine(root, file1), FileMode.Open),
                                                            mc =>
                    {
                        // return Assembly.GetAssembly(typeof(EdiFabric.Templates.EdifactD96A.ADR));
                        return(Assembly.GetAssembly(typeof(EdiFabric.Templates.X12005010.AAA)));
                    }))
                    {
                        var ediItems = reader.ReadToEnd().ToList();

                        if (ediItems.Any(i => i is EdiFabric.Core.Model.Edi.ErrorContexts.ReaderErrorContext))
                        {
                            Console.WriteLine(file1 + " " + ediItems.First(i =>
                                                                           i is EdiFabric.Core.Model.Edi.ErrorContexts.ReaderErrorContext));
                        }

                        using (var fr = new FieldWriter(File.CreateText(@"c:\temp\wm_orders.csv")))
                        {
                            fr.WT("PO#");
                            fr.WT("date purchased");
                            fr.WT("additional dates");
                            fr.WT("monetary amount");
                            fr.WT("store");
                            fr.WT("line#");
                            fr.WT("item#");
                            fr.WT("upc");
                            fr.WT("model");
                            fr.WT("color");
                            fr.WT("upc");
                            fr.WT("Qty");
                            fr.WT("UnitPrice");
                            fr.WT("other", true);

                            foreach (var ediItem in ediItems.Where(i => i is EdiFabric.Templates.X12005010.TS850))
                            {
                                var po = (EdiFabric.Templates.X12005010.TS850)ediItem;

                                var storeDict = new Dictionary <string, List <(PO1 PO1, string qty)> >();
                                foreach (var line in po.PO1Loop)
                                {
                                    foreach (var sdq in line.SDQ)
                                    {
                                        //WL("IdentificationCodeQualifier_02", sdq.IdentificationCodeQualifier_02);
                                        WL1(MapLocation(ids, sdq.IdentificationCode_03), line.PO1, sdq.Quantity_04,
                                            storeDict);
                                        WL1(MapLocation(ids, sdq.IdentificationCode_05), line.PO1, sdq.Quantity_06,
                                            storeDict);
                                        WL1(MapLocation(ids, sdq.IdentificationCode_07), line.PO1, sdq.Quantity_08,
                                            storeDict);
                                        WL1(MapLocation(ids, sdq.IdentificationCode_09), line.PO1, sdq.Quantity_10,
                                            storeDict);
                                        WL1(MapLocation(ids, sdq.IdentificationCode_11), line.PO1, sdq.Quantity_12,
                                            storeDict);
                                        WL1(MapLocation(ids, sdq.IdentificationCode_13), line.PO1, sdq.Quantity_14,
                                            storeDict);
                                        WL1(MapLocation(ids, sdq.IdentificationCode_15), line.PO1, sdq.Quantity_16,
                                            storeDict);
                                        WL1(MapLocation(ids, sdq.IdentificationCode_17), line.PO1, sdq.Quantity_18,
                                            storeDict);
                                        WL1(MapLocation(ids, sdq.IdentificationCode_19), line.PO1, sdq.Quantity_20,
                                            storeDict);
                                        WL1(MapLocation(ids, sdq.IdentificationCode_21), line.PO1, sdq.Quantity_22,
                                            storeDict);
                                    }
                                }


                                foreach (var store in storeDict)
                                {
                                    foreach (var line in store.Value)
                                    {
                                        fr.WT(po.BEG.PurchaseOrderNumber_03);
                                        fr.WT(po.BEG.Date_05);
                                        fr.WT(string.Join("; ",
                                                          po.DTM.Select(d =>
                                                                        ParseDateType(d.DateTimeQualifier_01) + " " + d.Date_02 + " " +
                                                                        d.Time_03)));
                                        fr.WT(po.CTTLoop.AMT.MonetaryAmount_02);
                                        fr.WT(store.Key);
                                        fr.WT(line.PO1.AssignedIdentification_01);
                                        fr.WT(line.PO1.ProductServiceID_07);
                                        fr.WT("'" + line.PO1.ProductServiceID_09);
                                        fr.WT(line.PO1.ProductServiceID_11);
                                        fr.WT(line.PO1.ProductServiceID_13);
                                        fr.WT("'" + line.PO1.ProductServiceID_23);
                                        fr.WT(line.qty);
                                        fr.WT(line.PO1.UnitPrice_04);
                                        fr.WT(string.Join(";", po.REF.Select(r =>
                                                                             MapRef(r.ReferenceIdentificationQualifier_01) + " = " +
                                                                             r.ReferenceIdentification_02
                                                                             )), true);
                                    }
                                }


                                /*    foreach (var n1 in po.N1Loop)
                                 *  {
                                 *      WL("EntityIdentifierCode_01", n1.N1.EntityIdentifierCode_01);
                                 *      WL("Name_02", n1.N1.Name_02);
                                 *  }*/
                            }
                        }
                    }
                }
            }

            #endregion
        }
Ejemplo n.º 27
0
 private static void WriteLowesAsn(TS856 asn, FieldWriter writer)
 {
 }
Ejemplo n.º 28
0
        public FieldWriter NewField()
        {
            var field = new FieldWriter(this, _builder, string.Empty);

            return(field);
        }
Ejemplo n.º 29
0
        public static void TranslateX12(string ediSourcePath, string translatedFolderPath,
                                        Assembly templateAssembly,
                                        string fileNameFilter  = null,
                                        bool withAcknowlegment = false)
        {
            var settings = new AckSettings
            {
                AckHandler = (s, a) =>
                {
                    var tsTa1 = a.Message as TSTA1;
                    var ts997 = a.Message as TS997;

                    // ts997.AK1.FunctionalIdentifierCode_01 = "A";
                    ts997.AK9.FunctionalGroupAcknowledgeCode_01  = "A";
                    ts997.AK9.NumberofAcceptedTransactionSets_04 = ts997.AK9.NumberofReceivedTransactionSets_03;
                    foreach (var aa in ts997.AK2Loop1)
                    {
                        aa.AK5.TransactionSetAcknowledgmentCode_01 = "A";
                        aa.AK3Loop1 = null;
                    }

                    if (tsTa1 != null)
                    {
                        // a.Message is TA1
                    }

                    if (ts997 != null)
                    {
                        //  Inspect the acknowledgment
                        var ackCode = ts997.AK9.FunctionalGroupAcknowledgeCode_01;

                        var ack = AckBuilders.BuildAck(a.InterchangeHeader, a.GroupHeader, ts997, AckVersion.X12_997);
                        Debug.Write(ack);
                    }
                },
                MessageHandler = (s, a) =>
                {
                    if (!a.ErrorContext.HasErrors)
                    {
                        // do something with the message a.Message
                        Debug.WriteLine("Message {0} with control number {1} is valid.", a.ErrorContext.Name,
                                        a.ErrorContext.ControlNumber);
                    }

                    a.ErrorContext.Errors.Clear();
                    a.ErrorContext.HasErrors = false;
                },
                AckVersion = AckVersion.X12_997,
                // Turn off AK2 for valid messages to reduce size
                GenerateForValidMessages = false
            };

            foreach (var fileName in Directory.EnumerateFiles(ediSourcePath, fileNameFilter ?? "*"))
            {
                var ackMan = withAcknowlegment ? new EdiFabric.Plugins.Acknowledgments.X12.AckMan(settings) : null;
                try
                {
                    using (X12Reader reader = new X12Reader(new FileStream(fileName, FileMode.Open), mc =>
                    {
                        // return Assembly.GetAssembly(typeof(EdiFabric.Templates.EdifactD96A.ADR));
                        return(templateAssembly);
                    }))
                    {
                        var ediItems = reader.ReadToEnd().ToList();
                        Console.WriteLine(Path.GetFileName(fileName));
                        foreach (var ediItem in ediItems)
                        {
                            if (withAcknowlegment)
                            {
                                ackMan.Publish(ediItem);
                            }

                            var resultFileName = Path.Combine(translatedFolderPath,
                                                              Path.GetFileNameWithoutExtension(fileName) + ".txt");
                            if (ediItem is TS856)
                            {
                                var asn = (TS856)ediItem;
                                using (var writer = new FieldWriter(File.CreateText(resultFileName)))
                                {
                                    WriteLowesAsn(asn, writer);
                                }
                            }
                        }
                    }
                }
                finally
                {
                    ackMan?.Dispose();
                }
            }
        }
Ejemplo n.º 30
0
        public static void TranslateEdiFact(string ediSourcePath, string translatedFolderPath, string fileNameFilter = null, bool withAcknowlegment = false)
        {
            var settings = new EdiFabric.Plugins.Acknowledgments.Edifact.Model.AckSettings
            {
                AckHandler = (s, a) =>
                {
                    var contrl = a.Message as EdiFabric.Core.Model.Edi.Edifact.TSCONTRL;

                    // ts997.AK1.FunctionalIdentifierCode_01 = "A";

                    /* ts997.AK9.FunctionalGroupAcknowriter.WLedgeCode_01 = "A";
                     * ts997.AK9.NumberofAcceptedTransactionSets_04 = ts997.AK9.NumberofReceivedTransactionSets_03;
                     * foreach (var aa in ts997.AK2Loop1)
                     * {
                     *   aa.AK5.TransactionSetAcknowriter.WLedgmentCode_01 = "A";
                     *   aa.AK3Loop1 = null;
                     * }*/

                    if (contrl != null && a.AckType == AckType.Functional)
                    {
                        //  Inspect the acknowriter.WLedgment
                        var ackCode = contrl.UCI.Actioncoded_04;

                        var ack = AckBuilders.BuildAck(a.InterchangeHeader, a.GroupHeader, contrl);
                        using (var file = File.CreateText(Path.Combine(translatedFolderPath,
                                                                       Guid.NewGuid().ToString().Replace("-", "").ToLower() + ".txt")))
                        {
                            file.Write(ack);
                        }
                    }
                },
                MessageHandler = (s, a) =>
                {
                    if (!a.ErrorContext.HasErrors)
                    {
                        // do something with the message a.Message
                        Debug.WriteLine("Message {0} with control number {1} is valid.", a.ErrorContext.Name, a.ErrorContext.ControlNumber);
                    }

                    a.ErrorContext.Errors.Clear();
                    a.ErrorContext.HasErrors = false;
                },
                //AckVersion = AckVersion.X12_997,
                // Turn off AK2 for valid messages to reduce size
                GenerateForValidMessages = false
            };

            foreach (var fileName in Directory.EnumerateFiles(ediSourcePath, fileNameFilter ?? "*"))
            {
                var ackMan = withAcknowlegment ? new EdiFabric.Plugins.Acknowledgments.Edifact.AckMan(settings) : null;
                try
                {
                    using (EdifactReader reader = new EdifactReader(new FileStream(fileName, FileMode.Open)))
                    {
                        var ediItems = reader.ReadToEnd().ToList();
                        Console.WriteLine(Path.GetFileName(fileName));
                        foreach (var ediItem in ediItems)
                        {
                            /*
                             *.Where(i =>
                             * !(i is EdiFabric.Core.Model.Edi.Edifact.UNB) &&
                             * !(i is EdiFabric.Core.Model.Edi.Edifact.UNG) &&
                             * !(i is EdiFabric.Core.Model.Edi.Edifact.UNE) &&
                             * !(i is EdiFabric.Core.Model.Edi.Edifact.UNZ)
                             * )
                             */
                            if (withAcknowlegment)
                            {
                                ackMan.Publish(ediItem);
                            }

                            var resultFileName = Path.Combine(translatedFolderPath,
                                                              Path.GetFileNameWithoutExtension(fileName) + ".txt");
                            if (ediItem is TSDESADV)
                            {
                                var asn = (TSDESADV)ediItem;
                                using (var writer = new FieldWriter(File.CreateText(resultFileName)))
                                {
                                    WriteLenovoAsn(asn, writer);
                                }
                            }

                            if (ediItem is TSORDERS)
                            {
                                var order = (TSORDERS)ediItem;
                                using (var writer = new FieldWriter(File.CreateText(resultFileName)))
                                {
                                    WriteLenovoOrder(order, writer);
                                }
                            }
                        }
                    }
                }
                finally
                {
                    ackMan?.Dispose();
                }
            }
        }