예제 #1
0
파일: Class1.cs 프로젝트: guipaa/PDF.NET
        static void TestBIZ()
        {
            //我们创建几样商品
            GoodsStock RedWine = new GoodsStock() { GoodsName = "红酒", GoodsPrice = 1800, GoodsNumber = 10, SerialNumber ="J000111" };
            GoodsStock Condoms = new GoodsStock() { GoodsName = "安全套", GoodsPrice = 35, GoodsNumber = 10, SerialNumber ="T213000" };

            //我们创建几位顾客
            Customer Chunge = new Customer() { CustomerName = "春哥" };
            Customer Beianqi = new Customer() { CustomerName = "贝安琪" };
            Customer Noname = new Customer();

            //有一台收银机
            CashierRegisterMachines crManchines = new CashierRegisterMachines() { CashRegisterNo = "CR00011" };
            //当然,我们需要收银员啊
            Cashier CashierMM = new Cashier(crManchines) { CashierName = "收银员MM", WorkNumber = "SYY10011" };

            //顾客逛了一圈,选了自己想要的商品
            Chunge.LikeBuy(RedWine.TakeOut(1));
            Beianqi.LikeBuy(RedWine.TakeOut(1));
            Beianqi.LikeBuy(Condoms.TakeOut(1));
            Noname.LikeBuy(Condoms.TakeOut(2));

            //调用收银业务类
            CashierRegisterBIZ biz = new CashierRegisterBIZ(CashierMM ,crManchines);
            biz.AddQueue(Chunge);
            biz.AddQueue(Beianqi);
            biz.AddQueue(Noname);

            biz.CashierRegister();


        }
예제 #2
0
파일: Class1.cs 프로젝트: guipaa/PDF.NET
        static void TestModel()
        {
            //http://www.cnblogs.com/assion/archive/2011/05/13/2045253.html

            //我们创建几样商品
            GoodsStock RedWine = new GoodsStock() { GoodsName = "红酒", GoodsPrice = 1800, GoodsNumber = 10 };
            GoodsStock Condoms = new GoodsStock() { GoodsName = "安全套", GoodsPrice = 35, GoodsNumber = 10 };

            //我们创建几位顾客
            Customer Chunge = new Customer() { CustomerName = "春哥" };
            Customer Beianqi = new Customer() { CustomerName = "贝安琪" };
            Customer Noname = new Customer();

            //有一台收银机
            CashierRegisterMachines crManchines = new CashierRegisterMachines() { CashRegisterNo = "CR00011" };
            //当然,我们需要收银员啊
            Cashier CashierMM = new Cashier(crManchines) { CashierName = "收银员MM", WorkNumber = "SYY10011" };

           

            //顾客开始排队结帐了
            Queue<Customer> customerQueue = new Queue<Customer>();
            customerQueue.Enqueue(Chunge);
            customerQueue.Enqueue(Beianqi);
            customerQueue.Enqueue(Noname);

            //队伍过来,按先后顺序挨个收银喽
            foreach (var customer in customerQueue)
            {
                //收银
                CashierMM.CashRegister(customer);
            }

        }
예제 #3
0
        /// <summary>
        /// 指定的客户是否还需要继续等待
        /// </summary>
        /// <param name="customer"></param>
        /// <param name="salePriceVM">销售价格单</param>
        /// <returns></returns>
        public bool Waite(Customer customer)
        {
            if (this.processingCustomer == customer)
            {
                //是当前用户,开始收银
                //如果客户同意付款
                //对客户所购物品的售价进行实际的计算
                List<GoodsSalePriceVM> salesPriceInfo = new List<GoodsSalePriceVM>();

                GoodsManageBIZ biz = new GoodsManageBIZ();
                CustomerManageBIZ cbiz = new CustomerManageBIZ();
                bool isCustomer = (cbiz.GetCustomerContactInfo(customer.CustomerID) != null);

                foreach (Goods goods in customer.Goodss)
                {
                    GoodsSalePriceVM vm = new GoodsSalePriceVM(goods);
                    int integral;
                    decimal sellPrice = biz.GoodsSellPrice(goods.GoodsID, goods.SerialNumber, goods.GoodsNumber, isCustomer, out integral);
                    
                    if (sellPrice == 0)
                    {
                        vm.GoodsNumber = 0;
                        goods.GoodsNumber = 0;
                    }
                    vm.DiscountPrice = sellPrice;
                    //goods.GoodsPrice = sellPrice;
                    goods.Integral = integral;
                    salesPriceInfo.Add(vm);
                }

                this.CurrCRManchines.ReSet();
                this.CurrCRManchines.GoodsSalePriceList = salesPriceInfo; 
                return false;
            }
            else
            {
                if (this.processingCustomer == null)
                {
                    if (customerQueue.Count > 0)
                    {
                        //准备进行下一个客户的处理
                        this.processingCustomer = customerQueue.Dequeue();
                        this.lastProcessTime = DateTime.Now;
                    }
                }
                else
                { 
                    //当前客户可能已经离开,放弃购物了,需要强行清除,否则后面的客户将会一直等待
                    if (DateTime.Now.Subtract(lastProcessTime).Minutes > 5)
                        this.processingCustomer = null;
                }
               
                return true;
            }
        }
예제 #4
0
파일: Cashier.cs 프로젝트: guipaa/PDF.NET
        /// <summary>
        /// 收银
        /// </summary>
        /// <param name="customer">顾客</param>
        public bool  CashRegister(Customer customer)
        {
            //打开使用收银机
            //CashierRegisterMachines cashRegister = new CashierRegisterMachines();
            
            //对顾客的商品进行收银机扫码,收银
            foreach (var goods in customer.Goodss)
            {
                //使用收银机扫商品进行收银
                _cashRegister.CashRegisters(goods);
            }

            //通知顾客一共收多少钱
            return customer.ListenAmount(_cashRegister.ShowAmount());
        }
예제 #5
0
 private void bindGrid(Customer customer)
 {
     this.GridView1.DataSource = customer.Goodss;
     this.GridView1.DataBind();
     this.lblAmout.Text = customer.GoodsAmount().ToString();
 }
예제 #6
0
 /// <summary>
 /// 退出队列,返回购物
 /// </summary>
 /// <param name="customer"></param>
 public void ExitQueue(Customer customer)
 {
     if (this.processingCustomer == customer)
         this.processingCustomer = null;
 }
예제 #7
0
 /// <summary>
 /// 顾客排队
 /// </summary>
 /// <param name="customer"></param>
 public void AddQueue(Customer customer)
 {
     customerQueue.Enqueue(customer);
 }
예제 #8
0
        /// <summary>
        /// 保存销售信息
        /// </summary>
        /// <param name="customer">客户信息</param>
        /// <param name="integral">要增加的积分</param>
        /// <returns></returns>
        private GoodsSellNote SaveSalesInfo(Customer customer, int integral)
        {
            GoodsSellNote note = new GoodsSellNote();
            note.CustomerID = customer.CustomerID;
            note.ManchinesNumber = this.CurrCRManchines.CashRegisterNo;
            note.SalesmanID = this.CurrCashier.WorkNumber;
            note.SalesType = "店内销售";
            note.SellDate = DateTime.Now;
            note.GoodsSellDetails = new List<GoodsSellDetail>();

            AdoHelper db = MyDB.GetDBHelper();
            db.BeginTransaction();
            try
            {
                EntityQuery<GoodsSellNote> query = new EntityQuery<GoodsSellNote>(db);
                if (query.Insert(note) > 0)
                {
                    foreach (Goods goods in customer.Goodss)
                    {
                        if (goods.GoodsNumber > 0)
                        {
                            //处理详单
                            GoodsSellDetail detail = new GoodsSellDetail();
                            detail.GoodsPrice = goods.GoodsPrice;
                            detail.NoteID = note.NoteID;
                            detail.SellNumber = goods.GoodsNumber;
                            detail.SerialNumber = goods.SerialNumber;

                            note.GoodsSellDetails.Add(detail);

                            //更新库存
                            SuperMarketDAL.Entitys.GoodsStock stock = new SuperMarketDAL.Entitys.GoodsStock();
                            stock.GoodsID = goods.GoodsID;
                            stock.Stocks = goods.GoodsNumber;
                            
                            OQL q = OQL.From(stock)
                                .UpdateSelf ('-', stock.Stocks)
                                .Where(stock.GoodsID)
                                .END;
                            EntityQuery<SuperMarketDAL.Entitys.GoodsStock>.ExecuteOql(q, db);

                        }
                    }

                    EntityQuery<GoodsSellDetail> queryDetail = new EntityQuery<GoodsSellDetail>(db);
                    queryDetail.Insert(note.GoodsSellDetails);

                    //更新会员的积分
                    if (integral > 0)
                    {
                        SuperMarketDAL.Entitys.CustomerContactInfo ccInfo = new CustomerContactInfo();
                        ccInfo.CustomerID = customer.CustomerID;
                        ccInfo.Integral = integral;
                        OQL qc = OQL.From(ccInfo)
                                .UpdateSelf('+', ccInfo.Integral )
                                .Where(ccInfo.CustomerID )
                                .END;
                        EntityQuery<SuperMarketDAL.Entitys.GoodsStock>.ExecuteOql(qc, db);
                    }
                }
                db.Commit();
            }
            catch (Exception ex)
            {
                db.Rollback();
                throw new Exception("插入销售记录失败,内部错误原因:" + ex.Message);
            }
            return note;
        }
예제 #9
0
        private void PrintSalesNote(GoodsSellNote note, Customer customer)
        {
            System.Text.StringBuilder sb = new StringBuilder();
            sb.Append("\r\n=======销售单信息=========================");
            sb.Append("\r\n流水号:" + note.NoteID.ToString("N8"));
            sb.Append("\r\n客户号:" + note.CustomerID);
            sb.Append("\r\n终端号:" + note.ManchinesNumber);
            sb.Append("\r\n销售员:" + note.SalesmanID);
            sb.Append("\r\n日  期:" + note.SellDate);
            sb.Append("\r\n------- 销售明细--------------------------");
            sb.Append("\r\n商品名称|\t单价    |\t数量    |\t价格    " );
            sb.Append("\r\n------------------------------------------");

            int allIntegral = 0;
            foreach (Goods goods in customer.Goodss)
            {
                sb.Append("\r\n" + goods.GoodsName);
                sb.Append("\t\t" + goods.GoodsPrice.ToString ("c"));
                sb.Append("\t" + goods.GoodsNumber);
                sb.Append("\t" + (goods.GoodsPrice * goods.GoodsNumber).ToString ("c"));
                allIntegral += goods.Integral;
            }
            sb.Append("\r\n------------------------------------------");
            sb.Append("\r\n金额合计:" + this.CurrCRManchines.ShowAmount().ToString ("c"));
            sb.Append("\r\n");
            if (allIntegral > 0)
                sb.Append("本次消费可以获得的积分:"+allIntegral );

            customer.SalesNote = sb.ToString();
        }
예제 #10
0
        /// <summary>
        /// (待客户确认后的)收银处理
        /// </summary>
        public void Processing()
        {
            if (this.processingCustomer != null)
            {
                if (this.CurrCashier.CashRegister(this.processingCustomer))
                {
                    //收款
                    if (Gathering(this.CurrCRManchines.ShowAmount()))
                    {
                        //本次销售可获得的总积分
                        int allIntegral = this.processingCustomer.Goodss.Sum(p => p.Integral); 
                        
                        //写入销售记录
                        GoodsSellNote note = SaveSalesInfo(this.processingCustomer, allIntegral);
                        //打印销售回单
                        PrintSalesNote(note, this.processingCustomer);

                        Console.Write(this.processingCustomer.SalesNote);
                    }
                }
                this.processingCustomer.Goodss.Clear(); 
            }

            if (customerQueue.Count > 0)
            {
                //准备进行下一个客户的处理
                this.processingCustomer = customerQueue.Dequeue();
            }
            else
            {
                this.processingCustomer = null;
            }
            
        }
예제 #11
0
 protected void Button1_Click(object sender, EventArgs e)
 {
     Customer customer = new Customer();
     Session["Curr_Customer"] = customer;
     Response.Redirect("Index.aspx");
 }