🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / C# RMOS / Mt940 parser

1-) C# RMOS - Mt940 parser

 

Install-Package SharpMt940Lib.Core -Version 1.0.2

 

  private CustomerStatementMessage GetMT940ToXML(string filename)

        {

            // ANSI gönderilen dosya formatlarını "ISO-8859-9" olarak okuyoruz.

            var detectedEncoding = DetectFileEncoding(File.OpenRead(filename));

 

            try

            {

                using (var ms = new MemoryStream())

                using (var sw = new StreamWriter(ms))

                {

                    sw.Write("STARTUMSE\n");

 

                    using (var sr = new StreamReader(filename, detectedEncoding))

                    {

                        string line;

                        while ((line = sr.ReadLine()) != null)

                        {

                            if (line.StartsWith(":60:"))// 60m, 60F yada 60M olmalı

                                line = line.Replace(":60:", ":60F:");

                            if (line.StartsWith(":61:"))//Tarihler arasında "/" olmamalı.

                                line = line.Replace("//", "*RMOS*").Replace("/", "").Replace("*RMOS*", "//");

                            if (line.StartsWith(":62:"))// 62m, 62F yada 62M olmalı

                                line = line.Replace(":62:", ":62F:");

                            sw.WriteLine(line);

                        }

                    }

 

                    sw.Write("-");

                    sw.Flush();

 

                    ms.Seek(0, SeekOrigin.Begin);

 

                    StreamReader reader = new StreamReader(ms)

;

                    var header = new Raptorious.SharpMt940Lib.Mt940Format.Separator("STARTUMSE");

                    var trailer = new Raptorious.SharpMt940Lib.Mt940Format.Separator("-");

                    var genericFomat = new Raptorious.SharpMt940Lib.Mt940Format.GenericFormat(header, trailer);

 

                    var liste = Mt940Parser.Parse(genericFomat, reader, CultureInfo.CurrentCulture);

                    return liste.FirstOrDefault();

                }

            }

            catch (Exception ex)

            {

                MessageBox.Show("MT940 Dönüştürülemedi. Sebebi:" + ex.Message + Environment.NewLine + filename);

                return null;

            }

        }

 

        public Encoding DetectFileEncoding(Stream fileStream)

        {

            var Utf8EncodingVerifier = Encoding.GetEncoding("utf-8", new EncoderExceptionFallback(), new DecoderExceptionFallback());

            using (var reader = new StreamReader(fileStream, Utf8EncodingVerifier,

                   detectEncodingFromByteOrderMarks: true, leaveOpen: true, bufferSize: 1024))

            {

                Encoding detectedEncoding;

                try

                {

                    while (!reader.EndOfStream)

                    {

                        var line = reader.ReadLine();

                    }

                    detectedEncoding = Encoding.UTF8;

                }

                catch (Exception e)

                {

                    detectedEncoding = Encoding.GetEncoding("ISO-8859-9");

                }

 

                fileStream.Seek(0, SeekOrigin.Begin);

 

                return detectedEncoding;

            }

        }

 2021 Şubat 25 Perşembe
 454