public static string PRAP_GetOtherInsurancePaymentName(SHDocVw.InternetExplorer wb, SHDocVw.ShellWindows shells) { mshtml.HTMLDocument wbDoc = wb.Document; foreach (mshtml.IHTMLElement a in wbDoc.getElementsByTagName("a")) { if (a.innerText == "Third Party Liability") { a.click(); } } /* * find the table by document index of tables. if that table only has 1 row, the table is empty. otherwise, those rows should * be investigated for TPL payments * * Table[1] > TR[1] * foreach table in TR[1] * table[0] > TR ID="claimBody" > td id="claimTab4" > table[0] > tr[3] > table[0] > *tr[1]* */ // todo: test elements and values found mshtml.HTMLTableCell claimTabCell = wb.Document.getElementById("claimTab4"); mshtml.HTMLTable otherInsTable = claimTabCell.getElementsByTagName("table").item(0); mshtml.HTMLTableRow otherInsTableRow = otherInsTable.rows.item(3); //.getElementsByTagName("tr").item(4); mshtml.HTMLTableCell otherInshtableCell = otherInsTableRow.getElementsByTagName("td").item(0); mshtml.HTMLTable oiSubTable = otherInshtableCell.getElementsByTagName("table").item(0); foreach (mshtml.HTMLTableRow Row in oiSubTable.rows) { //Console.WriteLine("row counts of subTable: " + oiSubTable.rows.length); try { mshtml.HTMLTable table = Row.getElementsByTagName("table").item(0); otherInsTableRow = table.getElementsByTagName("tr").item(1); table = otherInsTableRow.getElementsByTagName("table").item(0); otherInsTableRow = table.getElementsByTagName("tr").item(0); mshtml.IHTMLElement oiName = otherInsTableRow.getElementsByTagName("a").item(0); string carrier = oiName.innerText; //Console.WriteLine("carrier: " + carrier); if (carrier != "") { return(carrier); //Console.WriteLine("OI found, provider: " + carrier); } } catch (Exception) { Console.WriteLine("OI Exception"); return(null); } } return(null); }
//Step 2 (WHILE) public bool DoStep2_Set(int startIdx = 0) { mshtml.HTMLDocument Doc = default(mshtml.HTMLDocument); mshtml.IHTMLElementCollection eles = default(mshtml.IHTMLElementCollection); Doc = (mshtml.HTMLDocument)Ie.Document; mshtml.HTMLWindow2 fra = Pub_Com.GetFrameWait(ref Ie, "fraHyou"); while (ReferenceEquals(fra, null)) { Com.Sleep5(1000); fra = Pub_Com.GetFrameWait(ref Ie, "fraHyou"); } Pub_Com.SleepAndWaitComplete(Ie); Doc = (mshtml.HTMLDocument)fra.document; eles = Doc.getElementsByTagName("input"); Pub_Com.SleepAndWaitComplete(Ie); Com.Sleep5(1000); if (eles.length == 0) { MessageBox.Show("明細がありません、多分発注した件数多いです"); Ie.Visible = true; System.Environment.Exit(0); return(false); } for (int i = startIdx; i <= eles.length - 1; i++) { mshtml.IHTMLElement ele = (mshtml.IHTMLElement)(eles.item(i)); if (ReferenceEquals(ele, null)) { continue; } try { if (ele.getAttribute("name").ToString() == "strMitKbnHen") { mshtml.IHTMLTableRow tr = (mshtml.IHTMLTableRow)ele.parentElement.parentElement; mshtml.HTMLTableCell td = (mshtml.HTMLTableCell)(tr.cells.item(4)); if (td.innerText == "作成中") { ele.click(); Pub_Com.GetElementBy(ref Ie, "fraHead", "input", "value", "発注納期非表示").click(); Pub_Com.SleepAndWaitComplete(Ie); mshtml.HTMLDocument Doc1 = (mshtml.HTMLDocument)Ie.Document; mshtml.HTMLWindow2 fra1 = Pub_Com.GetFrameWait(ref Ie, "fraMitBody"); Doc1 = (mshtml.HTMLDocument)fra1.document; if (Doc1.body.innerText.IndexOf("発注可能な見積ではありません") > 0) { Ie.GoBack(); Pub_Com.SleepAndWaitComplete(Ie); return(DoStep2_Set(i + 1)); } else { return(true); } } } } catch (Exception) { } } return(false); }
//実行 MAIN public void DoAll() { //SavePdf("aaaa.csv") Pub_Com = new Com("納期指定発注" + DateTime.Now.ToString("yyyyMMddHHmmss")); if (Pub_Com.file_list_Nouki.Count == 0) { ProBar = 100; return; } lv1 = System.Convert.ToDecimal(90 / Pub_Com.file_list_Nouki.Count); lv2 = lv1 / 15; //一回目 bool firsOpenKbn = true; object authHeader = "Authorization: Basic " + Convert.ToBase64String(System.Text.UnicodeEncoding.UTF8.GetBytes(string.Format("{0}:{1}", Pub_Com.user, Pub_Com.password))) + "\\r\\n"; //*** OnSiteパスワード入力画面 Ie.Navigate(Pub_Com.url, null, null, null, authHeader); Ie.Silent = true; Ie.Visible = IeVisible; ProBar = 5; //***ログイン DoStep1_Login(); //CSV ファイルs 取込 ProBar = 10; for (int fileIdx = 0; fileIdx <= Pub_Com.file_list_Nouki.Count - 1; fileIdx++) { string csvFileName = System.Convert.ToString(Pub_Com.file_list_Nouki[fileIdx].ToString().Trim()); string[] csvNameSplitor = csvFileName.Split('-'); string 事業所 = csvNameSplitor[0]; string 得意先 = csvNameSplitor[1]; string 店 = csvNameSplitor[2]; string 現場名 = csvNameSplitor[3]; string 備考 = csvNameSplitor[4]; string 日付連番 = csvNameSplitor[5]; //一回目ではなく 実行 if (firsOpenKbn == false) { Pub_Com.GetElementBy(ref Ie, "fraHead", "input", "value", "絞込検索").click(); Pub_Com.SleepAndWaitComplete(Ie); } firsOpenKbn = false; AddProBar(lv2); //1 Pub_Com.AddMsg("取込:" + Pub_Com.file_list_Nouki[fileIdx].ToString().Trim()); //見積検索 Pub_Com.AddMsg("見積検索"); DoStep1_PoupuSentaku(事業所, 得意先, 店, 現場名, 備考, 日付連番, csvFileName); Pub_Com.SleepAndWaitComplete(Ie); AddProBar(lv2); //2 //納期日設定 if (!DoStep2_Set()) { continue; } Pub_Com.SleepAndWaitComplete(Ie); Pub_Com.SleepAndWaitComplete(Ie); Pub_Com.SleepAndWaitComplete(Ie); //該当データがありません NEXT mshtml.HTMLWindow2 fraTmp = Pub_Com.GetFrameByName(ref Ie, "fraHyou"); if (fraTmp != null) { if (fraTmp.document.body.innerText.IndexOf("該当データがありません") >= 0) { continue; } } //CSVファイル内容取込 string[] csvDataLines = System.IO.File.ReadAllLines(Pub_Com.folder_Nouki + csvFileName); string code = ""; string nouki = ""; AddProBar(lv2); //3 mshtml.HTMLWindow2 fra = Pub_Com.GetFrameWait(ref Ie, "fraMitBody"); mshtml.HTMLDocument Doc = (mshtml.HTMLDocument)fra.document; mshtml.IHTMLElementCollection eles = Doc.getElementsByTagName("input"); //Radio 明細Key mshtml.IHTMLElementCollection cbEles = Doc.getElementsByName("strMeisaiKey"); //指定納期 mshtml.IHTMLElementCollection nouhinDateEles = Doc.getElementsByName("strSiteiNouhinDate"); int csvIdx = 0; int sameCdSuu = 0; int gamenSameCdSuu = 0; //CSV LINES for (int csvLinesIdx = 0; csvLinesIdx <= csvDataLines.Length - 1; csvLinesIdx++) { if (!string.IsNullOrEmpty(csvDataLines[csvLinesIdx].Trim())) { //コード 納期 code = System.Convert.ToString(csvDataLines[csvLinesIdx].Split(',')[1].Trim()); nouki = System.Convert.ToString((System.Convert.ToDateTime(csvDataLines[csvLinesIdx].Split(',')[2].Trim())).ToString("yyyy/MM/dd")); sameCdSuu = 0; gamenSameCdSuu = 0; for (csvIdx = 0; csvIdx <= csvLinesIdx; csvIdx++) { if (csvDataLines[csvIdx].Split(',')[1].Trim() == code) { sameCdSuu++; } } for (int i = 0; i <= cbEles.length - 1; i++) { mshtml.IHTMLElement cb = (mshtml.IHTMLElement)(cbEles.item(i)); mshtml.IHTMLTableRow tr = (mshtml.IHTMLTableRow)cb.parentElement.parentElement; mshtml.HTMLTableCell td = (mshtml.HTMLTableCell)(tr.cells.item(1)); mshtml.IHTMLTable table = (mshtml.IHTMLTable)cb.parentElement.parentElement.parentElement.parentElement; bool isHaveDate = false; if (td.innerText == code) { gamenSameCdSuu++; if (sameCdSuu == gamenSameCdSuu) { mshtml.IHTMLSelectElement sel = (mshtml.IHTMLSelectElement)(nouhinDateEles.item(i)); for (int j = 0; j <= sel.length - 1; j++) { mshtml.IHTMLOptionElement opEle = (mshtml.IHTMLOptionElement)(sel.item(j)); if (opEle.value.IndexOf(nouki) > 0) { opEle.selected = true; isHaveDate = true; break; } } } else { continue; } if (!isHaveDate) { MessageBox.Show("コード:[" + code + "] 納品希望日:[" + nouki + "]がありません"); return; } } } } } AddProBar(lv2); //4 Pub_Com.GetElementBy(ref Ie, "fraMitBody", "select", "name", "strBukkenKbn").setAttribute("value", "01"); Pub_Com.GetElementBy(ref Ie, "fraMitBody", "input", "value", "発 注").click(); Pub_Com.SleepAndWaitComplete(Ie); Pub_Com.SleepAndWaitComplete(Ie); Pub_Com.SleepAndWaitComplete(Ie); AddProBar(lv2); //5 Pub_Com.GetElementBy(ref Ie, "fraMitBody", "input", "value", "発注結果照会へ").click(); Pub_Com.SleepAndWaitComplete(Ie); AddProBar(lv2); //6 //PDF 印刷 if (insatu) { SHDocVw.InternetExplorerMedium childIe = default(SHDocVw.InternetExplorerMedium); int RebackKaisu = -1; Reback: RebackKaisu++; Com.Sleep5(1000); //前回印刷画面 Close ClosePrintPage(); Pub_Com.GetElementBy(ref Ie, "fraMitBody", "input", "value", "結果印刷").click(); int wait_print; wait_print = int.Parse(Com.GetAppSetting("wait_print")); AutoResetEvent myEvent = new AutoResetEvent(false); myEvent.WaitOne(wait_print * 1000); myEvent.Close(); try { //印刷画面取得する childIe = GetPrintPage(); } catch (Exception) { } Com.Sleep5(1000); //IE エラー判定する if (GetErrCon() == false) { Com.Sleep5(1000); if (RebackKaisu <= 1) { goto Reback; } else { if (MessageBox.Show("帳票Download エラーしました、終了ですか?", "Confirm Message", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { System.Environment.Exit(0); } } } string flName = Pub_Com.pdfPath + csvFileName; try { bool rtv = GetFcwInfo(childIe, flName); ClosePrintPage(); if (rtv == false) { if (RebackKaisu <= 1) { goto Reback; } else { if (MessageBox.Show("帳票Download エラーしました、終了ですか?", "Confirm Message", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { System.Environment.Exit(0); } } } } catch (Exception) { ClosePrintPage(); if (RebackKaisu <= 1) { goto Reback; } else { if (MessageBox.Show("帳票Download エラーしました、終了ですか?", "Confirm Message", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { System.Environment.Exit(0); } } } } AddProBar(lv2); //10 Pub_Com.AddMsg("移動CSV:" + csvFileName + "→" + Pub_Com.folder_Nouki_kanryou); Com.MoveFile(Pub_Com.folder_Nouki + csvFileName, Pub_Com.folder_Nouki_kanryou + csvFileName); AddProBar(lv2); //11 Pub_Com.GetElementBy(ref Ie, "fraMitMenu", "a", "innertext", "[見積一覧を再表示]").click(); Pub_Com.SleepAndWaitComplete(Ie); } ProBar = 100; }