public static void AddNewEntryFromStringArray( BankRow entryStrings, SortedList kontoEntries, SortedList newKontoEntries, SortedList newBatchOfKontoEntriesAlreadyRed) { var newKeyFromHtml = new KontoEntry(entryStrings); var key = newKeyFromHtml.KeyForThis; if (!kontoEntries.ContainsKey(key) && !newKontoEntries.ContainsKey(key)) // Kollas även senare { // if (newKontoEntries != null) {// && !newKontoEntries.ContainsKey(key)) { if (key != null) { newKontoEntries.Add(key, newKeyFromHtml); // } // else { // //Dubblett // } } // Handle Doubles } else if (!newBatchOfKontoEntriesAlreadyRed.ContainsKey(key)) { // Om man hade entryn i Excel, innan laddning, och innan man gick igenom nya, så kan man (förutsätter att man då det inte finns saldo (i allkort-kredit), så läses hela listan in i ett svep, det är inte en lista, det kan ev. bli dubblet om två datum hamnar på olika allkort-kredit-fakturor) var userDecision = MessageBox.Show( "Found potential double: " + newKeyFromHtml.KeyForThis, "Double, SaveThisEntry?", MessageBoxButtons.YesNo); if (userDecision.Equals(DialogResult.Yes)) { // Detta är en dubblett, men om det finns fler än 2 dubbletter så måste man se till att nyckeln är unik while (newKontoEntries.ContainsKey(newKeyFromHtml.KeyForThis)) { // Stega upp saldo, tills en unik nyckel skapats newKeyFromHtml.SaldoOrginal += newKeyFromHtml.KostnadEllerInkomst != 0 ? newKeyFromHtml.KostnadEllerInkomst : 1; } newKontoEntries.Add(newKeyFromHtml.KeyForThis, newKeyFromHtml); } // För annat än Allkortskredit, så ordnar Detta 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 } }
public KontoEntry(BankRow fromBank) { Date = fromBank.Date; Info = fromBank.EventValue; KostnadEllerInkomst = fromBank.BeloppValue.GetDoubleValueFromStringEntry(); SaldoOrginal = fromBank.SaldoValue.GetDoubleValueFromStringEntry(); }
private List<BankRow> ParseKontoStringsToBankRow(List<string> parsed) { //"2015-10-13 ROSE GARDEN SUPREME S. ASKIM -95,00".LastIndexOf(" ") 39 int //"2015-10-13 ROSE GARDEN SUPREME S. ASKIM -95,00".Substring(39, 46-39) " -95,00" string //"2015-10-13 ROSE GARDEN SUPREME S. ASKIM -95,00".Length 46 int var rows = new List<BankRow>(); foreach (var pdftextRow in parsed) { var entryStrings = new BankRow(); var dateLength = 10; entryStrings.DateValue = pdftextRow .Substring(0, dateLength); var firstBeloppCharPos = pdftextRow.LastIndexOf(" "); var pdftextRowLength = pdftextRow.Length; var beloppStartPos = firstBeloppCharPos; var beloppEndPos = pdftextRowLength - beloppStartPos; entryStrings.BeloppValue = pdftextRow.Substring(beloppStartPos, beloppEndPos); var eventStartPos = dateLength + 1; var eventEndPos = firstBeloppCharPos - eventStartPos; entryStrings.EventValue = pdftextRow.Substring(eventStartPos, eventEndPos); entryStrings.SaldoValue = string.Empty; rows.Add(entryStrings); } return rows; }
private static BankRow GetSwedBankTableRow(HtmlElement htmlElement) { const int dateColNum = 1; const int eventColNum = 2; const int beloppColNum = 4; const int saldoColNum = 5; var entryStrings = new BankRow(); entryStrings.DateValue = htmlElement.Children[dateColNum] != null ? "20" + htmlElement.Children[dateColNum].InnerText : string.Empty; entryStrings.EventValue = htmlElement.Children[eventColNum] != null ? htmlElement.Children[eventColNum].InnerText : string.Empty; var beloppVal = htmlElement.Children.Count > beloppColNum ? (htmlElement.Children[beloppColNum] != null ? htmlElement.Children[beloppColNum].InnerText : string.Empty) : (htmlElement.Children[3] != null ? htmlElement.Children[3].InnerText : string.Empty); entryStrings.BeloppValue =StringFuncions.RemoveSekFromMoneyString(beloppVal); entryStrings.SaldoValue = htmlElement.Children.Count > saldoColNum && htmlElement.Children[saldoColNum] != null ? htmlElement.Children[saldoColNum].InnerText : string.Empty; return entryStrings; }
private static BankRow GetHandelsbankenTableRowForLoneAndAllkort(HtmlElement htmlElement) { var entryStrings = new BankRow(); entryStrings.DateValue = htmlElement.FirstChild.NextSibling.NextSibling.InnerText.Trim(); entryStrings.EventValue = htmlElement.FirstChild .NextSibling.NextSibling.NextSibling.NextSibling.InnerText.Trim(); var beloppVal = htmlElement.FirstChild .NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling .InnerText.Trim(); entryStrings.BeloppValue = StringFuncions.RemoveSekFromMoneyString(beloppVal); entryStrings.SaldoValue = string.Empty; return entryStrings; }
private static BankRow GetHandelsbankenTableRowForKredit(HtmlElement htmlElement) { var entryStrings = new BankRow(); var firstColumn = htmlElement.FirstChild.InnerText.Trim().ToLower(); entryStrings.DateValue = firstColumn; entryStrings.EventValue = htmlElement.Children[4] //entryStrings.EventValue = htmlElement.FirstChild //.NextSibling.NextSibling.NextSibling.NextSibling .InnerText.Trim(); var beloppVal = htmlElement.Children[10] .InnerText.Trim(); entryStrings.BeloppValue = StringFuncions.RemoveSekFromMoneyString(beloppVal); entryStrings.SaldoValue = string.Empty; return entryStrings; }