public static bool canStartGetPolicy() { try { EagleWebService.IbeFunc fc = new EagleWebService.IbeFunc(); DateTime serverTime = fc.ServerTime(); if (serverTime.Hour < 8 || serverTime.Hour >= 20) { return(true); } else if (serverTime.Hour >= 12 && serverTime.Hour < 14) { return(true); } else { MessageBox.Show("由于在高峰时期计算返点政策可能导致服务器崩溃,可使用时间:0点-8点,12点-14点,20点-24点" , "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } } catch { MessageBox.Show("不能得到服务器时间,请重试", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } }
/// <summary> /// 产生PNR /// </summary> /// <param name="flightno">航班号</param> /// <param name="actioncode">"LL"</param> /// <param name="date">航班日期</param> /// <param name="city">起飞城市</param> /// <param name="city2">抵达城市</param> /// <param name="bunk">舱位</param> /// <param name="names">姓名</param> /// <param name="dtlimit">时限</param> /// <param name="cardnos">证件号</param> /// <param name="remarks">备注</param> /// <param name="pnr">返回PNR</param> public static void CreatePnrFromIbe(string [] flightno, string [] actioncode, DateTime [] date, string[] city, string [] city2, char[] bunk, string [] names, DateTime dtlimit, string[] cardnos, string [] remarks, ref string pnr) { EagleWebService.IbeFunc fc = new EagleWebService.IbeFunc(); string[] flightdate = new string[date.Length]; string[] bunks = new string[date.Length]; for (int i = 0; i < date.Length; ++i) { flightdate[i] = date[i].ToString("yyyy-MM-dd"); bunks[i] = bunk[i].ToString(); } logic.IBEAgent ibeagent = new logic.IBEAgent(); string xml = EagleString.egString.CreateXmlOfEagleIbe(flightno, actioncode, date, city, city2, bunk, names, dtlimit, cardnos, remarks); try { pnr = fc.SS(flightno, actioncode, flightdate, city, city2, bunks, names, dtlimit.ToString("yyyy-MM-dd HH:mm:00"), cardnos, remarks); } catch { pnr = ibeagent.MakeEbtOrder(xml); } }
/// <summary> /// 计算一个PNR的各种价格(各航段分计),注:不取返点政策 /// </summary> /// <param name="total">总票价与etdz结果比较</param> /// <param name="sFare">单个成人票面价</param> /// <param name="sBuild">单个成人机建</param> /// <param name="sFuel">单个成人燃油</param> /// <param name="sFareY">Y舱的价格,为了儿童或婴儿的计算</param> public static void CalPnrsTotalPrice(RtResult rtres, string wsaddr, ref int total, ref int[] sFare, ref int[] sBuild, ref int[] sFuel, ref int[] sFareY) { total = 0; EagleWebService.IbeFunc fc = new EagleWebService.IbeFunc(); //Hashtable ht = fc.DSG(rtres.PNR);//有待IBE恢复 for (int i = 0; i < rtres.SEGMENG.Length; ++i) { string cp = rtres.SEGMENG[i].Citypair; OleDbConnection cn = new OleDbConnection(); int price = EagleString.EagleFileIO.PriceOf(cp); int distance = EagleString.EagleFileIO.DistanceOf(cp); if (price == 0) { EagleWebService.kernalFunkEx.FC_get_server_local(cp, cn, wsaddr, ref distance, ref price); } int pricec = EagleString.egString.TicketPrice(price, 50); int rebate = EagleString.EagleFileIO.RebateOf(rtres.SEGMENG[i].Bunk, rtres.SEGMENG[i].Flight); if (EagleString.egString.LargeThan420(rtres.SEGMENG[i].Date)) { rebate = EagleString.EagleFileIO.RebateOfNew(rtres.SEGMENG[i].Bunk, rtres.SEGMENG[i].Flight); } int pricea = EagleString.egString.TicketPrice(price, rebate); string flight = rtres.SEGMENG[i].Flight; if (flight[0] == '*') { flight = flight.Substring(1); } //由于IBE不能使用,暂时用50代替 int taxbuild = 50; //int taxbuild = EagleString.EagleFileIO.TaxOfBuildBy(ht[flight].ToString()); int taxfuel = EagleString.EagleFileIO.TaxOfFuelBy(distance); pricec += EagleString.egString.TicketPrice(taxfuel, 50);//(taxfuel) / 2; sFare[i] = pricea; pricea += taxfuel + taxbuild; total += pricec * rtres.CHILDRENCOUNT + pricea * rtres.ADULTCOUNT; sBuild[i] = taxbuild; sFuel[i] = taxfuel; sFareY[i] = price; } }
private int MoneyOfPnr(string pnr) { if (!EagleString.BaseFunc.PnrValidate(pnr)) { throw new Exception("INVALID PNR!"); } EagleWebService.IbeFunc ibe = new EagleWebService.IbeFunc(); string xml = ibe.RT2(pnr); if (xml == "") { if (ibe.RT(pnr).ToLower().Contains("cancel")) { return(0); } } EagleWebService.IbeRtResult ibert = new EagleWebService.IbeRtResult(xml); string[] names = ibert.getpeopleinfo(0); int iAdult = 0, iChild = 0;//成人数与儿童数 for (int i = 0; i < names.Length; i++) { if (names[i].Contains("(CHD)")) { iChild++; } else { iAdult++; } } EagleWebService.IbeFunc func = new EagleWebService.IbeFunc(); Hashtable ht; try { ht = func.DSG(pnr); } catch { ht = null; } string[] flights = ibert.getflightsegsinfo(); int pAdult = 0, pChild = 0; for (int i = 0; i < flights.Length; i++) { string[] a = flights[i].Split('~'); if (a[0] == "ARNK") { continue; } int y = EagleString.EagleFileIO.PriceOf(a[2]); pChild += EagleString.egString.TicketPrice(y, 50); int rebate; //Fri Apr 17 10:30:00 CST 2009 string[] b = a[3].Split(' '); DateTime flightdate = new DateTime(int.Parse(b[5]), EagleString.BaseFunc.MonthInt2(b[1]), int.Parse(b[2])); if (DateTime.Compare(flightdate, DateTime.Parse("2009-4-20")) >= 0) { rebate = EagleString.EagleFileIO.RebateOfNew(a[1][0], a[0]); } else { rebate = EagleString.EagleFileIO.RebateOf(a[1][0], a[0]); } if (rebate == 29 || rebate == 43) { throw new Exception("SPECIAL BUNK!"); } pAdult += EagleString.egString.TicketPrice(y, rebate); pAdult += (ht == null ? 50 : EagleString.EagleFileIO.TaxOfBuildBy(ht[a[0]].ToString())); int fuel = EagleString.EagleFileIO.TaxOfFuelBy(EagleString.EagleFileIO.DistanceOf(a[2])); pChild += EagleString.egString.TicketPrice(fuel, 50); pAdult += fuel; } int ret = pAdult * iAdult + pChild * iChild; return(ret); }
private void btnPnrView_Click(object sender, EventArgs e) { get_control(); EagleWebService.IbeFunc fc = new EagleWebService.IbeFunc(); MessageBox.Show(fc.RT(m_pnr)); }