/// <summary> /// Parsetaan Osuuspankin tiedoista yksittäisiä maksuja. Tiedot joita voi parsea löytyvät kohdasta Tilit -> Verkkotiliote, ja siitä tietyn välin maksut /// Ei mikään erityisen hyvä komponentti, joten toimii vain tiettyjen maksujen kanssa. Omalla kuitenkin parsesi iloisesti 1.1.2012 - 30.11.2012-väliset maksut, että jotenkin toimii /// Poikkeuksia voi olla, sillä ei kaikenlaisia maksuja omasta historiasta löydy(esim tilisiirrot ulkomaille heittäis poikkeuksen varmaankin) /// Yksi rivi, josta koitetaan parsea pitäisi näyttää suunnilleen: /// 3.11.2012 3.11.2012 -44 106 TILISIIRTO TNNET OY FI29 1045 3000 1397 57 /NDEAFIHH 00000 00396 73001 60188 20121103/593497/JC0742 /// </summary> private void ParseTapahtumat() { string[] separator = new string[] { "\r\n" }; string[] kentatTaulukko = TextBoxSyote.Text.Split(separator, StringSplitOptions.None); try { foreach (string maksu in kentatTaulukko) { if (maksu.Equals("")) return; Tilitapahtuma t = new Tilitapahtuma(); string[] maksuTaulu = maksu.Trim().Split(' '); t.Päivämäärä = DateTime.Parse(maksuTaulu[0]); t.Summa = Convert.ToDouble(maksuTaulu[2]); t.Selitys = maksuTaulu[4]; string uusi = ""; for (int i = 5; i < maksuTaulu.Length; i++) { uusi = uusi + maksuTaulu[i] + " "; } string[] stringSeparators = new string[] { "Viesti:" }; string[] uusiTaulu = uusi.Split(stringSeparators, StringSplitOptions.None); if (uusiTaulu.Length > 1) { t.Kohde = uusiTaulu[0]; } else { stringSeparators = new string[] { "FI" }; uusiTaulu = uusi.Split(stringSeparators, StringSplitOptions.None); if (uusiTaulu.Length > 1) { t.Kohde = uusiTaulu[0]; t.Tilinumero = "FI" + uusiTaulu[1]; } } if(t.Selitys.ToLower().Equals("automaattinosto")) t.Kohde = "Automaatti"; if(t.Selitys.ToLower().Equals("palkka")) t.Kohde = "Palkka"; ListaTapahtumat.Add(t); } } catch (FormatException) { MessageBox.Show("Ongelma maksujen kääntämisessä"); } }
/// <summary> /// Kysytään käyttäjältä haluaako hän tallentaa nykyiset auki olevat tilitapahtumat, jonka jälkeen avataan OpenFileDialog, jossa käyttäjä hakee haluamansa /// .las-päättyvän Tililaskuri-tiedoston, jonka jälkeen nykyinen lista tilitapahutmista tyhjennetään ja tiedostosta parsetaan tapahtumat kyseiseen listaan, /// päivittäen lopulta tapahtumat datagrid-elementtiin /// </summary> /// <param name="target">Tapahtuman kutsuja, tässä tapauksessa Tililaskuri</param> /// <param name="e">Tapahtuman eventit, ei tarvita</param> private void SuoritaAvaaKomento(object target, ExecutedRoutedEventArgs e) { KyllaEiPeruutaDialog dialog = new KyllaEiPeruutaDialog(); dialog.ShowDialog(); if (dialog.DialogResult.HasValue && dialog.DialogResult.Value) { if (dialog.PainettiinkoPeruuta == true) return; SuoritaTallennaKomento(target, null); } OpenFileDialog dlg = new OpenFileDialog(); dlg.FileName = ".las"; dlg.DefaultExt = ".las"; dlg.Filter = "Tililaskuri-tiedostot (.las)|*.las"; Nullable<bool> result = dlg.ShowDialog(); if (result == true) { ListaTapahtumat.Clear(); string filename = dlg.FileName; StreamReader reader = new StreamReader(filename); string line; while ((line = reader.ReadLine()) != null) { Tilitapahtuma t = new Tilitapahtuma(); char[] separator = new char[] { '|' }; string[] kentat = line.Split(separator, StringSplitOptions.None); t.Kohde = kentat[0]; t.Päivämäärä = DateTime.Parse(kentat[1]); t.Summa = Convert.ToDouble(kentat[2]); t.Selitys = kentat[3]; t.Tilinumero = kentat[4]; ListaTapahtumat.Add(t); } HaeTapahtumat(this, null); } }