コード例 #1
0
        /// <summary>
        /// 计算每个航段的价格及返点
        /// </summary>
        public static void CalPnrsPrices(RtResult rtres, LoginInfo li,
                                         ref int [] sFare,
                                         ref int [] sBuild,
                                         ref int [] sFuel,
                                         ref double[] sGain,
                                         ref int [] sFareY,
                                         ref int totalEtdz)
        {
            int total = 0;

            CalPnrsTotalPrice(rtres, li.b2b.webservice, ref totalEtdz, ref sFare, ref sBuild, ref sFuel, ref sFareY);
            EagleWebService.kernalFunc kf = new EagleWebService.kernalFunc(li.b2b.webservice);
            EagleString.ProfitResult   profitResult;
            for (int i = 0; i < rtres.SEGMENG.Length; ++i)
            {
                profitResult = new ProfitResult(
                    kf.GetPolicies(
                        li.b2b.username,
                        rtres.FLIGHTS[i],
                        rtres.FLIGHTDATES[i].ToShortDateString(),
                        rtres.CITYPAIRS[i]
                        ));
                string profit = profitResult.ProfitWithFlightAndBunk(rtres.FLIGHTS[i], rtres.BUNKS[i]);
                try
                {
                    sGain[i] = double.Parse(profit.Replace("%", ""));
                }
                catch
                {
                    sGain[i] = 0;
                }
            }
        }
コード例 #2
0
        public void Recv(RtResult rtres)
        {
            bool flag = false;

            switch (rtres.FLAG_OF_PNR)
            {
            case PNR_FLAG.CANCELLED:

                fc.SubmitEticketInfomation(rtres, 0, 1, 0, 0, int.Parse(m_li.b2b.lr.IpidUsing[0]), ref flag);
                return;

                break;

            case PNR_FLAG.ETICKET:
                break;

            case PNR_FLAG.MARRIED:
                File.AppendAllText(file, "\r\n" + rtres.PNR);
                break;

            case PNR_FLAG.NORMAL:
                File.AppendAllText(file, "\r\n" + rtres.PNR);
                break;
            }
            int total = 0;
            int count = rtres.SEGMENG.Length;

            int[] sFare  = new int[count];
            int[] sBuild = new int[count];
            int[] sFuel  = new int[count];
            int[] sFareY = new int[count];
            global::EagleExtension.EagleExtension.CalPnrsTotalPrice(
                rtres, m_li.b2b.webservice, ref total, ref sFare, ref sBuild, ref sFuel, ref sFareY
                );
            int builda = 0;
            int buildc = 0;
            int fuela  = 0;
            int fuelc  = 0;

            foreach (int i in sBuild)
            {
                builda += i;
            }
            foreach (int i in sFuel)
            {
                fuela += i;
                fuelc += EagleString.egString.TicketPrice(i, 50);
            }
            int build = rtres.CHILDRENCOUNT * buildc + rtres.ADULTCOUNT * builda;
            int fuel  = rtres.CHILDRENCOUNT * fuelc + rtres.ADULTCOUNT * fuela;

            fc.SubmitEticketInfomation(rtres, total, 1, build, fuel, int.Parse(m_li.b2b.lr.IpidUsing[0]), ref flag);
            if (flag)
            {
                EagleFileIO.LogWrite("电子客票提交成功:" + rtres.PNR);
            }
            start();
        }
コード例 #3
0
        /// <summary>
        /// 计算一个PNR的总价格含税(可能与实际价格不符,价格数据库必须有对应价格)
        /// </summary>
        public static void CalPnrsTotalPrice(RtResult rtres, string wsaddr, ref int total)
        {
            int count = rtres.SEGMENG.Length;

            int [] sFare  = new int [count];
            int [] sBuild = new int [count];
            int [] sFuel  = new int[count];
            int[]  sFareY = new int[count];
            CalPnrsTotalPrice(rtres, wsaddr, ref total, ref sFare, ref sBuild, ref sFuel, ref sFareY);
        }
コード例 #4
0
        public static void CalPnrSomePrice(RtResult rtres, LoginInfo li,
                                           ref int fare, ref double real, ref int build, ref int fuel, ref double gainAver, ref double liren, ref double total)
        {
            int len = rtres.SEGMENG.Length;

            int[]    sFare     = new int[len];
            int[]    sBuild    = new int[len];
            int[]    sFuel     = new int[len];
            double[] sGain     = new double[len];
            int[]    sFareY    = new int[len];
            int      totalEtdz = 0;

            CalPnrsPrices(rtres, li, ref sFare, ref sBuild, ref sFuel, ref sGain, ref sFareY, ref totalEtdz);
            fare     = 0;
            real     = 0.0;
            build    = 0;
            fuel     = 0;
            liren    = 0.0;
            total    = 0.0;
            gainAver = 0.0;
            int    cfare  = 0;
            double creal  = 0.0;
            int    cbuild = 0;
            int    cfuel  = 0;

            //所有航段之和,一个成人的价格,一个儿童的价格
            for (int i = 0; i < len; ++i)
            {
                fare  += sFare[i];
                real  += (double)sFare[i] * (100F - sGain[i]) / 100F;
                build += sBuild[i];
                fuel  += sFuel[i];

                int temp = EagleString.egString.TicketPrice(sFareY[i], 50);
                cfare  += temp;
                creal  += (double)temp * (100F - sGain[i]) / 100F;
                cbuild += 0;
                cfuel  += EagleString.egString.TicketPrice(sFuel[i], 50);
            }
            liren = (double)fare - real;
            total = (real + (double)(build + fuel)) * rtres.ADULTCOUNT +
                    (creal + (double)(cbuild + cfuel)) * rtres.CHILDRENCOUNT;
            gainAver = ((double)totalEtdz - total) / (double)totalEtdz;
        }
コード例 #5
0
 /// <summary>
 /// 一键出票RT结果处理
 /// </summary>
 private void HandleEtdzOneKeyRt()
 {
     try
     {
         rtResult           = new RtResult(dataHandler.COMMANDRESULT, commandPool.PNRing);
         m_etdzonekey.rtres = rtResult;
         //TODO:此处增加预计金额控制
         {
             float yue = EagleExtension.EagleExtension.BALANCE(loginInfo.b2b.username, loginInfo.b2b.webservice);
             int   dec = 0;
             EagleExtension.EagleExtension.CalPnrsTotalPrice(rtResult, loginInfo.b2b.webservice, ref dec);
             AppendBlackWindow(yue.ToString("f2") + "-" + dec.ToString() + "\r\n>");
             //if ((float)dec > yue) return;
         }
         if (string.IsNullOrEmpty(m_etdzonekey.pat))
         {
             string cmd = m_etdzonekey.CreateEtdzString();
             //AppendBlackWindow(cmd + "    无PAT项生成的etdz串\r\n>");
             if (string.IsNullOrEmpty(cmd))
             {
                 commandPool.HandleCommand("i");
             }
             else
             {
                 commandPool.SetType(ETERM_COMMAND_TYPE.ETDZ);
                 CheckBeforeSend();
                 socket.SendCommand(cmd, EagleProtocal.TypeOfCommand.Multi);//发送ETDZ
             }
         }
         else
         {
             string cmd = commandPool.HandleCommand(m_etdzonekey.pat);
             //AppendBlackWindow(cmd + "     有PAT项,发送\r\n>");
             commandPool.SetType(ETERM_COMMAND_TYPE.ETDZ_ONEKEY_PAT);
             socket.SendCommand(cmd, EagleProtocal.TypeOfCommand.Multi);//发送PAT
         }
     }
     catch (Exception ex)
     {
         AppendBlackWindow("HandleEtdzOneKeyRt : " + ex.Message + "\r\n>");
     }
 }
コード例 #6
0
        /// <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;
            }
        }
コード例 #7
0
 private void HandleRt(string rtstring)
 {
     try
     {
         rtResult = new RtResult(rtstring, commandPool.PNRing);
         OuterHandleRtResult(rtResult);//Outer配置互换
         pnrOperating     = commandPool.PNRing;
         pnrstatOperating = 1;
         Thread thread = new Thread(new ThreadStart(th_SubmitPnrState));
         thread.Start();
         int total = 0;
         try
         {
             receipt.SetControlsByRtResult(rtResult);
         }
         catch
         {
         }
         try
         {
             Printer.Insurance.Instance.SetControlsByRtResult(rtResult);
         }
         catch
         {
         }
         try
         {
             EagleExtension.EagleExtension.CalPnrsTotalPrice(rtResult, loginInfo.b2b.webservice, ref total);
             EagleString.EagleFileIO.LogWrite("预计总价格(不含婴儿):" + total.ToString() + "\r\n>");
         }
         catch
         {
         }
     }
     catch (Exception ex)
     {
         EagleString.EagleFileIO.LogWrite("HandleRt : " + ex.Message + "\r\n>");
     }
 }
コード例 #8
0
 /// <summary>
 /// 提交PNR订单发出的RT返回,获取PNR信息,并提交   --待测
 /// </summary>
 private void HandlePnrOrderSubmitRt()
 {
     try
     {
         rtResult = new RtResult(dataHandler.COMMANDRESULT, commandPool.PNRing);
         if (rtResult.SEGMENG.Length == 0)
         {
             throw new Exception("缺少有效航段");
         }
         if (rtResult.CARDID == null || rtResult.CARDID.Length == 0)
         {
             throw new Exception("缺少证件号码");
         }
         int    fare  = 0;
         double real  = 0.0;
         int    build = 0;
         int    fuel  = 0;
         double gain  = 0.0;
         double lirun = 0.0;
         double total = 0.0;
         EagleExtension.EagleExtension.CalPnrSomePrice(rtResult, loginInfo, ref fare, ref real, ref build, ref fuel,
                                                       ref gain, ref lirun, ref total);
         bool   succeed   = false;
         string passports = "";
         wserviceKernal.SubmitPnr(
             loginInfo.b2b.username,
             rtResult.PNR,
             DateTime.Now,
             "",
             string.Join(";", rtResult.Name_CARDS),
             EagleString.EagleFileIO.ValueOf("PNRORDERSUBMITPHONE"),
             rtResult.PSGCOUNT,
             rtResult.FLIGHTS,
             rtResult.BUNKS,
             rtResult.FLIGHTDATES,
             rtResult.CITYPAIRS,
             fare,
             real,
             build,
             fuel,
             gain,
             lirun,
             total,
             ref succeed,
             ref passports);
         if (succeed)
         {
             {
                 rtResult.SubmittdDate = DateTime.Now;
                 RtResultList rrl = RtResultList.DeSerializeRtResults();
                 if (rrl == null)
                 {
                     rrl = new RtResultList();
                 }
                 rrl.ls.Add(rtResult);
                 rrl.SerializeRtResults();
             }
             if (passports.Length >= 32)//发送提示新订单消息
             {
                 if (tcMain.SelectedTab == tpBlack)
                 {
                     AppendBlackWindow(string.Format("PNR订单提交成功,PNR={0}\r\n>", rtResult.PNR));
                 }
                 else
                 {
                     MessageBox.Show(string.Format("PNR订单提交成功,PNR={0}", rtResult.PNR));
                 }
                 socket.SendNewPnrOrder(passports.Split('~'));
             }
         }
         else
         {
             if (tcMain.SelectedTab == tpBlack)
             {
                 AppendBlackWindow(string.Format("PNR订单提交失败,PNR={0}\r\n>", rtResult.PNR));
             }
             else
             {
                 MessageBox.Show(string.Format("PNR订单提交失败,PNR={0}", rtResult.PNR));
             }
         }
     }
     catch (Exception ex)
     {
         AppendBlackWindow("HandlePnrOrderSubmitRt : " + ex.Message);
         if (tcMain.SelectedTab != tpBlack)
         {
             MessageBox.Show("HandlePnrOrderSubmitRt : " + ex.Message);
         }
     }
 }