Пример #1
0
        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
            }
        }
Пример #2
0
 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;
        }
Пример #4
0
        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;
        }
Пример #5
0
        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;
        }
Пример #6
0
        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;
        }