コード例 #1
0
        public void Ausführen()
        {
            PrintText("---- KontenSynchronisierenHBCI4j Window_Loaded()");
            ConWrLi("---- -50- KontenSynchronisierenHBCI4j Window_Loaded()");

            /* Verzeichnis: @"\KursDaten\Depot-aus-hbci4j\"
             * --funktion--            -was-           -wohin-
             * KontoStändeFinCmd       Kontostände     \Kontenstände-sKontoNr-DateTime.csv
             * KontoUmsätzeFinCmdStmt  Kontoumsätze    \Umsätze-KontoNr-DateTime.csv
             *                                         \logKontoUmsätzeHolen.txt
             * DepotHolen_ausführen    WertpapierDepot dtWertpapHBCI4j (Mit angepasstem hbci4j geholt)   */
            string propDir  = GlobalRef.g_Ein.strHBCI4j; // C:\Users\LuKe/hbci4j-core/hbci4j-core-3.0.10/
            string datenDir = GlobalRef.g_Ein.myDepotPfad + @"\KursDaten\Depot-aus-hbci4j\";

            //List<string> props = new List<string>();
            //props.Clear();
            // ---- Mit HBCI4j mit Java DepotAbrufTest.bat
            // -----    nach Wertpap_ISIN.xml
            PrintText("Start HBCI");
            ConWrLi("---- -51-Start HBCI");
            foreach (var ban in DgBanken.banken)
            {
                if (string.Compare(ban.SortFeld7, "888", StringComparison.OrdinalIgnoreCase) >= 0)
                {
                    continue;
                }
                // ---- props füllen.
                DirectoryInfo ParentDirectory = new DirectoryInfo(propDir);
                FileInfo[]    fis             = ParentDirectory.GetFiles();
                foreach (FileInfo fi in fis)
                {
                    string strExt = fi.Extension;
                    string line   = null;
                    if (string.Compare(strExt, ".properties") != 0)
                    {
                        continue;
                    }
                    //Console.WriteLine("{0}", fi.FullName);
                    if (fi.Length < 500 || fi.Length > 1600)
                    {
                        continue;
                    }
                    StreamReader file = new StreamReader(fi.FullName);
                    ConWrLi("---- -51-properties suchen: " + fi.FullName);
                    while ((line = file.ReadLine()) != null)
                    {
                        if (line.Contains("client.passport.default="))      // C:\Users\LuKe\hbci4j-core\hbci4j-core-3.0.10\hbci-ING-DiBa.properties
                        {
                            string strPfad = fi.FullName.Substring(2);
                            strPfad = strPfad.Replace(@"\", "/");
                            if (!fi.FullName.Contains(ban.BankName7))
                            {
                                continue;
                            }
                            if (ban.BankName7.Contains("ING"))
                            {
                                continue;
                            }
                            // NOCH wieder raus wenn ING läuft.
                            // ---- Java-Pgm schreibt nach datenDir.
                            //string argumentText = string.Format(@"{0}", propDir);   //, ausgabeDir);
                            Directory.SetCurrentDirectory(GlobalRef.g_Ein.strEclipseHbci4jClasses);
                            PrintText("---- - 51 - Vor process2.Start() HBCI Bank: " + ban.BankName7);
                            ConWrLi("---- -51-Vor process2.Start() HBCI Bank: " + ban.BankName7);
                            Process process2 = new Process();
                            process2.StartInfo.FileName               = GlobalRef.g_Ein.myDepotPfad + @"\DepotAbrufTest.bat";
                            process2.StartInfo.Arguments              = strPfad + " " + datenDir;
                            process2.StartInfo.UseShellExecute        = false;
                            process2.StartInfo.RedirectStandardOutput = true;
                            process2.StartInfo.CreateNoWindow         = true;
                            DoEvents();
                            process2.Start();
                            string strMeldung = process2.StandardOutput.ReadToEnd();    // Lange Wartezeit. NOCH strMeldung untersuchen ...
                            PrintText("---- - 51 - Vor process2.WaitForExit()");
                            ConWrLi("---- -51-Vor process2.WaitForExit()");
                            process2.WaitForExit();
                            PrintText("---- - 51 - Nach process2.WaitForExit()");
                            ConWrLi("---- -51-Nach process2.WaitForExit()");
                        }
                    } // while Zeilen file
                    file.Close();
                }     // foreach fi in fis
            }         // foreach ban in DGBanken.banken
            ConWrLi("---- -51- nach foreach ban in DGBanken.banken");
            PrintText("---- -51- nach foreach ban in DGBanken.banken");
            // ---- In List WertpapHBCI4j importieren
            DirectoryInfo ParentDirectory2 = new DirectoryInfo(datenDir);

            FileInfo[] fis2 = ParentDirectory2.GetFiles();
            ConWrLi("----------- Nur anzeigen " + fis2[0].DirectoryName + " ----------");
            // s.u. DataSet dsHier = new DataSet();
            wp4js.Clear();
            foreach (FileInfo fi in fis2)   // D:\MeineFinanzen\MyDepot\KursDaten\Depot-aus-hbci4j\DepotUmsatz_700617681.xml
            {
                string strExt   = fi.Extension;
                string strName  = fi.Name;
                string strDatum = fi.LastWriteTime.ToShortDateString(); // 08.07.2018
                string strHeute = DateTime.Today.ToShortDateString();
                if ((string.Compare(strExt, ".xml") != 0) || (!strName.StartsWith("Wertpapier_")))
                {
                    continue;
                }
                if ((strDatum != strHeute))
                {
                    continue;
                }
                //Console.Write("{0,-80} ", fi.FullName);
                wp4j = null;
                GlobalRef.g_WPHBCI.DeserializeReadWertpapHBCI4j(fi.FullName, out wp4j);
                // wird nicht gebraucht: dsHier.ReadXml(fi.FullName, XmlReadMode.Auto);
                //D:\MeineFinanzen\MyDepot\KursDaten\Depot-aus-hbci4j\Wertpapier_DE0006791809.xml KANAM GRUNDINVEST FONDS INHABER-ANTEILE  DE0006791809          13,37    06.07.18 20:37:34
                //D:\MeineFinanzen\MyDepot\KursDaten\Depot-aus-hbci4j\Wertpapier_DE0007483612.xml DEKA-IMMOBILIENGLOBAL INHABER-ANTEILE  DE0007483612          55,03    06.07.18 20:37:34
                string strForm = string.Format("{0,-62} {1,-12} {2,10} {3,18:dd/MM/yy H:mm:ss} KuWä:{4} DeWä:{5}", wp4j.Name, wp4j.ISIN, wp4j.Kurs, wp4j.KursZeit, wp4j.KursWaehrung, wp4j.DepotWaehrung);
                ConWrLi(strForm);
                PrintText(strForm);
                wp4js.Add(wp4j);
            }
            WertpapHBCI4jToPortFol();
            PrintText("hbci fertig");
        }
コード例 #2
0
        public bool WertpapHBCI4jToPortFol()    // Update von List WertpapHBCI4j wp4js nach dtPortFol.
        {
            if (wp4js.Count == 0)
            {
                return(true);
            }
            //DataView dvWertpapiereGesamt = new DataView(DataSetAdmin.dtWertpapSubsembly, "", "ISIN", DataViewRowState.CurrentRows);
            DataTable dtt2 = new DataTable();

            DataSetAdmin.dvPortFol.Sort             = "WPISIN";
            DataSetAdmin.dtPortFol.DefaultView.Sort = "WPISIN ASC";
            dtt2 = DataSetAdmin.dtPortFol.DefaultView.ToTable();
            DataSetAdmin.dtPortFol = dtt2;
            float  quantity        = -1; // Anzahl
            float  wpanzahl        = -1;
            string wpname          = "";
            string wpisin          = "";
            string HoldingCurrency = ""; // EUR
            double kurs;
            // ---- Prüfen ob WP in wp4js auch in dtPortFol sind.
            PortFolDatensatz portfolNeu = new PortFolDatensatz();

            foreach (WertpapHBCI4j HBCI4j in wp4js)
            {
                int nPortfol = DataSetAdmin.dvPortFol.Find(HBCI4j.ISIN);
                if (nPortfol < 0)             // ISIN nicht in dtPortFol, also in dtPortFol neu einfügen.
                {
                    DataRow newRow = DataSetAdmin.dtPortFol.NewRow();
                    newRow             = portfolNeu.dtPortFolAusdtNull(newRow);
                    newRow["WPName"]   = HBCI4j.Name;
                    newRow["WPIsin"]   = HBCI4j.ISIN;
                    newRow["WPAnzahl"] = HBCI4j.Saldo;
                    newRow["WPKurs"]   = HBCI4j.Kurs;
                    int l = HBCI4j.Name.ToString().Length;
                    if (l > 8)
                    {
                        l = 8;
                    }
                    newRow["WPKurz"]    = HBCI4j.Name.Substring(0, l);
                    newRow["WPAktWert"] = HBCI4j.DepotWert;
                    newRow["WPStand"]   = DateTime.Now;
                    DataSetAdmin.dtPortFol.Rows.Add(newRow);
                }
            }
            // ---- Prüfen ob WP aus dtPortFol auch in wp4js sind.
            foreach (DataRow rowPortFol in DataSetAdmin.dtPortFol.Rows)
            {
                wpname = (string)rowPortFol["WPName"];
                wpisin = (string)rowPortFol["WPIsin"];
                string wpid = rowPortFol["WPTypeID"].ToString();
                if ((rowPortFol["WPTypeID"].ToString() == "80") ||
                    (rowPortFol["WPTypeID"].ToString() == "10"))
                {
                    continue;
                }
                if (wpisin.Length < 9)
                {
                    continue;
                }
                WertpapHBCI4j HBCI4j = SucheISIN(wp4js, wpisin);
                if (HBCI4j == null)
                {
                    // Nicht, also in dtPortFol löschen.
                    MessageBox.Show("WertpapWertpapHBCI4jToPortFol() Löschen: " + wpname + " " + wpisin);
                    try {
                        DataSetAdmin.dtPortFol.Rows.Remove(rowPortFol);
                    } catch (Exception ex) {
                        MessageBox.Show("" + ex);
                    }
                    return(false);
                }
                kurs     = HBCI4j.Kurs;
                wpanzahl = Convert.ToSingle(rowPortFol["WPAnzahl"]);
                quantity = Convert.ToSingle(HBCI4j.Saldo);
                rowPortFol["WPAktWert"] = HBCI4j.DepotWert;
                double wpkaufsumme = Convert.ToDouble(rowPortFol["WPKaufsumme"]);
                double wpkurs      = Convert.ToDouble(rowPortFol["WPKurs"]);
                double kaufsumme   = HBCI4j.DepotWert;
                //Debug.WriteLine("wpkaufsumme: {0} CostPriceRate: {1} Kaufsumme: {2}", wpkaufsumme, CostPriceRate, CostPriceRate * wpanzahl);
                if (rowPortFol["WPTypeID"].ToString() == "70")
                {
                    quantity /= 100;
                }
                HoldingCurrency = HBCI4j.EinstandsPreisWaehrung;
                if (wpanzahl != quantity)
                {
                    //Debug.WriteLine("w:{0, -27} {1, -12} {2, -5} {3, -4}", wpname, wpisin, wpanzahl, wpges);
                    //Debug.WriteLine("g:{0, -27} {1, -12} {2, -5} {3, -4}", securityName, ISIN, quantity, wpges);
                    MessageBox.Show("NEU:  WPAnzahl (" + wpname + ") wird übernommen! Alt: " + wpanzahl + " Neu: " + quantity);
                    rowPortFol["WPAnzahl"] = quantity;
                }
                if (HBCI4j.KursWaehrung == string.Empty)
                {
                    HBCI4j.KursWaehrung = "EUR";
                }
                if (HBCI4j.KursWaehrung == "USD")
                {
                    kurs = GlobalRef.g_mw.USDtoEuro((float)HBCI4j.Kurs); // 51.5064 = 55.04      83.41 =
                    string strForm = string.Format("WertpapHBCI4jToPortFol() HBCI4j.KursWaehrung == 'USD' {0} = {1} / {2}", kurs, kaufsumme, quantity);
                    ConWrLi(strForm);
                }
                else if (HBCI4j.KursWaehrung == "EUR")
                {
                }
                else if (HBCI4j.KursWaehrung == "%")
                {
                }
                else
                {
                    MessageBox.Show("KontenSynchronisierenHBCI4j() WertpapHBCI4jToPortFol() Fehler: KursWaehrung: " + HBCI4j.KursWaehrung);
                    continue;
                }
                if (wpkurs != kurs)         // NOCH prüfen +- 10%
                {
                    ConWrLi("WPKurs (" + wpname + ") wird übernommen! Alt: " + wpkurs + " Neu: " + kurs);
                    rowPortFol["WPKurs"] = kurs;
                }
                DateTime stand   = HBCI4j.KursZeit;
                DateTime wpStand = Convert.ToDateTime(rowPortFol["WPStand"]);
                if (wpStand < stand)
                {
                    rowPortFol["WPStand"]       = stand;
                    rowPortFol["WPKursVorher"]  = wpkurs;
                    rowPortFol["WPStandVorher"] = wpStand;
                }
                rowPortFol["WPKaufsumme"] = wpkaufsumme;
                DateTime kaufdatum1 = (DateTime)rowPortFol["WPBisDatum"];
                if (kaufdatum1 != new DateTime(1980, 1, 1))
                {
                    rowPortFol["WPBisDatum"] = kaufdatum1;
                }
            }
            return(true);
        }