private static void GetSwedbankSaldo(HtmlElement htmlElement, SaldoHolder saldoHolder) { // foreach (HtmlElement currentElem in htmlElement.Children) { // if (currentElem.InnerText != null && currentElem.InnerText.Contains("Saldo")) { var nextIsSaldo = false; // var nextIsLöne = false; var saldoName = string.Empty; foreach (HtmlElement currentSubElem in htmlElement.All) { if (nextIsSaldo) { if (saldoName != string.Empty) { var saldoValue = currentSubElem.InnerText; saldoHolder.AddToOrChangeValueInDictionaryForKey(saldoName, saldoValue); break; } } if (currentSubElem.InnerText != null) { if (!currentSubElem.TagName.Equals("OPTION") && // h3 currentSubElem.TagName.Equals("H3")) { foreach (var currentSaldoName in SwedbankSaldonames) { if (currentSubElem.InnerText.Contains(currentSaldoName)) { saldoName = currentSaldoName; } } // if (currentSubElem.InnerText.Contains("8417-8,4 751 687-7")) // nextIsLöne = true; // else if (currentSubElem.InnerText.Contains("Privatkonto 8417-8,4 751 687-7")) // saldoNameNnumber = "Privatkonto 8417-8,4 751 687-7"; } if (currentSubElem.InnerText.Equals("Saldo")) { nextIsSaldo = true; } } } }
private static LoadOrSaveResult SkapaKontoEntries( SortedList saveToTable, Hashtable entriesLoadedFromDataStore, SaldoHolder saldoHolder) { var loadResult = new LoadOrSaveResult(); foreach (DictionaryEntry item in entriesLoadedFromDataStore) { if (item.Value != null) { var entryArray = ((ExcelRowEntry)item.Value).Args; // Om det är tomt if (entryArray == null) { continue; } // Om det är kolumnbeskrivning, skippa... if ((string)entryArray[0] == "y") { // var saldoAllkortKreditFakturerat = entryArray.Length > 15 ? entryArray[15] ?? saldoAllkortKreditFakturerat : saldoAllkortKreditFakturerat; var saldoColumnNumber = 11; if (ProgramSettings.BankType == BankType.Swedbank) { foreach (var saldoName in SwedbankSaldonames) { var saldot = entryArray.Length > saldoColumnNumber ? entryArray[saldoColumnNumber + 1] ?? string.Empty : string.Empty; // Todo, byt empty mot värden i saldon saldoHolder.AddToOrChangeValueInDictionaryForKey(saldoName, (double)saldot); saldoColumnNumber++; } } else if (ProgramSettings.BankType == BankType.Mobilhandelsbanken) { // Spara saldon, använd det gamla värdet om inget nytt hittats från fil. //var saldoLöne = saldoHolder.GetSaldoForName(LönekontoName); //var saldoAllkort = saldoHolder.GetSaldoForName(AllkortName); //var saldoAllkortKreditEjFakturerat = saldoHolder.GetSaldoForName(EjFaktureratEtcName); //var saldoLöne = GetValueIfNotEmpty(entryArray, 12); //var saldoAllkort = (string)(entryArray.Length > 13 ? entryArray[13] ?? saldoAllkort : saldoAllkort); //var saldoAllkortKreditEjFakturerat = (string)(entryArray.Length > 14 // ? entryArray[14] ?? saldoAllkortKreditEjFakturerat // : saldoAllkortKreditEjFakturerat); saldoHolder.AddToOrChangeValueInDictionaryForKey(LönekontoName, GetValueIfNotEmpty(entryArray, 12)); saldoHolder.AddToOrChangeValueInDictionaryForKey(AllkortName, GetValueIfNotEmpty(entryArray, 13)); saldoHolder.AddToOrChangeValueInDictionaryForKey( AllkortEjFaktureratName, GetValueIfNotEmpty(entryArray, 14) // + saldoAllkortKreditFakturerat.GetValueFromEntry() ); } // Hoppa över continue; } var newKe = new KontoEntry(entryArray, true); var key = newKe.KeyForThis; // item.Key as string; // Lägg till orginalraden, gör i UI-hanterare if (!saveToTable.ContainsKey(key)) { #region old debug // AddToRichTextBox(richTextBox1, newKE.RowToSaveForThis); // test debug // if (_newKontoEntries.Count < 6) // { // if (!_newKontoEntries.ContainsKey(key)) // { // _newKontoEntries.Add(key, newKE); // //AddToListview(m_newIitemsListOrg, newKE); // } // } // else #endregion saveToTable.Add(key, newKe); // CreateKE(entryArray, true) loadResult.somethingLoadedOrSaved = true; } else { // Detta ordnar sig, så länge saldot är med i nyckeln, det är den, så det gäller bara att ha rätt saldo i xls //Om man tagit utt t.ex. 100kr 2 ggr samma dag, från samma bankomat. hm, sätt 1 etta efteråt, men det göller ju bara det som är såna, hm, får ta dem manuellt // skulle kunna tillåta någon inläsning här ev. // om man kan förutsätta att xls:en är kollad, // det får bli här man lägger till specialdubbletter manuellt Console.WriteLine("Entry Double found. Key = " + key); // meddela detta till usern, man ser de på skipped... loadResult.skippedOrSaved++; } } } return loadResult; }
/// <summary> /// Körs flera gånger en per sida och får då ut flera olika konton och uppdaterar dess värde i saldo-tabellen. /// </summary> /// <param name="saldoElement"></param> /// <param name="saldon"></param> private static void GetMobileHandelsBankenSaldo(HtmlElement saldoElement, SaldoHolder saldoHolder) { var saldoName = saldoElement.FirstChild.FirstChild.InnerText; var saldoValueElem = saldoElement.FirstChild.NextSibling.NextSibling; var saldoValue = 0.0; if (saldoHolder.HasSaldoName(AllkortName) || saldoHolder.HasSaldoName("Allkortskonto")) { if (saldoName.Contains(AllkortName)) { // allkortHas = true; saldoName = AllkortName; } } if (saldoElement != null) { saldoValue = StringFuncions.RemoveSekFromMoneyString(saldoValueElem.InnerText). GetDoubleValueFromStringEntry(); saldoHolder.AddToOrChangeValueInDictionaryForKey(saldoName, saldoValue); } // Kolla disp. belopp var saldoNameDispBelopp = AllkortEjFaktureratName; saldoValueElem = saldoElement.FirstChild.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling; var saldoValueDisp = 0.0; if (saldoElement != null && saldoName != LönekontoName) { saldoValueDisp = StringFuncions.RemoveSekFromMoneyString(saldoValueElem.InnerText). GetDoubleValueFromStringEntry(); // Räkna ut mellanskillnaden som motsvarar fakturerat och ej förfallet etc const int KreditBelopp = 10000; saldoValueDisp = saldoValue + KreditBelopp - saldoValueDisp; saldoHolder.AddToOrChangeValueInDictionaryForKey(saldoNameDispBelopp, -saldoValueDisp); } }