private bool _close = false; //线程终止标志

        #endregion Fields

        #region Constructors

        //构造函数
        public SeatExpenseForm(CSeat seat, int _seat_length, bool _seatLock, bool _auto_seat_card, DAO _dao)
        {
            seatLock = _seatLock;
            auto_seat_card = _auto_seat_card;
            seat_length = _seat_length;
            dao = _dao;

            if (seatLock)
            {
                m_Seats.Add(dao.get_seat("text", seat.text));
            }
            else
            {
                string cmd_str = "((chainId is null and text='" + seat.text + "') or (chainId is not null and chainId='" + seat.chainId + "'))"
                    + @" and (status=2 or status=6 or status=7 or status=8)";
                var seats = dao.get_seats(cmd_str);
                m_Seats.AddRange(seats);
            }

            var pars = new List<string>();
            pars.Add("paying");

            var vals = new List<string>();
            vals.Add("True");

            int count = m_Seats.Count;
            string update_str = @"update [Seat] set paying='True' where ";
            for (int i = 0; i < count; i++ )
            {
                update_str += "text='" + m_Seats[i].text + "'";
                if (i != count - 1)
                    update_str += " or ";
            }

            if (!dao.execute_command(update_str))
            {
                BathClass.printErrorMsg("手牌状态更新失败,如有超时浴资,请删除手牌重新载入");
            }

            InitializeComponent();
        }
        public static void reprint_bill(CSeat seat, DAO dao, bool use_pad)
        {
            if (seat.status != SeatStatus.PAIED)
            {
                BathClass.printErrorMsg("已经重新开牌,不能重打账单!");
                return;
            }

            var account = dao.get_account("abandon is null and systemId like '%" + seat.systemId + "%'");
            if (account == null)
                return;

            var seats_txt = account.text.Split('|');
            string state_str = "";
            int count = seats_txt.Count();
            for (int i = 0; i < count; i++)
            {
                state_str += "text='" + seats_txt[i] + "'";
                if (i != count - 1)
                    state_str += " or ";
            }
            var seats_reprint = dao.get_seats(state_str);
            List<string> m_rooms = new List<string>();
            foreach (var s in seats_reprint)
            {
                m_rooms.Add(dao.get_seat_room(s.text));
            }

            DataGridView dgv = new DataGridView();

            DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn();
            col.HeaderText = "手牌";
            dgv.Columns.Add(col);

            DataGridViewTextBoxColumn coll = new DataGridViewTextBoxColumn();
            coll.HeaderText = "房间";
            dgv.Columns.Add(coll);

            DataGridViewTextBoxColumn col1 = new DataGridViewTextBoxColumn();
            col1.HeaderText = "项目名称";
            dgv.Columns.Add(col1);

            DataGridViewTextBoxColumn col2 = new DataGridViewTextBoxColumn();
            col2.HeaderText = "技师";
            dgv.Columns.Add(col2);

            DataGridViewTextBoxColumn col3 = new DataGridViewTextBoxColumn();
            col3.HeaderText = "单价";
            dgv.Columns.Add(col3);

            DataGridViewTextBoxColumn col4 = new DataGridViewTextBoxColumn();
            col4.HeaderText = "数量";
            dgv.Columns.Add(col4);

            DataGridViewTextBoxColumn col5 = new DataGridViewTextBoxColumn();
            col5.HeaderText = "金额";
            dgv.Columns.Add(col5);

            List<string> printCols = new List<string>();
            printCols.Add("手牌");
            if (use_pad)
                printCols.Add("房间");

            printCols.Add("项目名称");
            printCols.Add("单价");
            printCols.Add("数量");
            printCols.Add("金额");

            var use_disAssemble = MConvert<bool>.ToTypeOrDefault(LogIn.options.启用大项拆分, false);

            var co_name = LogIn.options.companyName;
            if (account != null)
            {
                try
                {
                    var db = new BathDBDataContext(LogIn.connectionString);
                    var orders = db.HisOrders.Where(x => x.deleteEmployee == null && x.accountId == account.id).OrderBy(x => x.text);
                    foreach (var order in orders)
                    {
                        var cmenu = db.Menu.FirstOrDefault(x => x.name == order.menu);
                        var price = "";
                        if (cmenu != null)
                        {
                            price = cmenu.price.ToString();
                            if (use_disAssemble && db.BigCombo.FirstOrDefault(x => x.menuid == cmenu.id) != null)
                            {
                                var substIDs = BathClass.disAssemble(db.BigCombo.FirstOrDefault(x => x.menuid == cmenu.id).substmenuid, Constants.SplitChar);
                                for (int i = 0; i < substIDs.Count; i++)
                                {
                                    var menu = db.Menu.FirstOrDefault(x => x.id == substIDs[i]);
                                    dgv.Rows.Add(order.text, order.roomId, menu.name, order.technician,
                                        menu.price, order.number, menu.price * MConvert<double>.ToTypeOrDefault(order.number, 0));
                                }
                                continue;
                            }
                        }

                        dgv.Rows.Add(order.text, order.roomId, order.menu, order.technician, price, order.number,order.money);
                    }
                    PrintBill.Print_DataGridView(seats_reprint, m_rooms,account, "存根单", dgv, printCols, co_name);
                }
                catch (System.Exception ex)
                {
                    BathClass.printErrorMsg(ex.ToString());
                }
            }
            else
            {
                double money = 0;

                try
                {
                    var db = new BathDBDataContext(LogIn.connectionString);
                    var orders = db.Orders.Where(x => x.text == seat.text && x.systemId != seat.systemId && x.deleteEmployee == null).OrderBy(x => x.text);
                    foreach (var order in orders)
                    {
                        var cmenu = db.Menu.FirstOrDefault(x => x.name == order.menu);
                        var price = "";
                        if (cmenu != null)
                            price = cmenu.price.ToString();

                        dgv.Rows.Add(order.text, order.roomId, order.menu, order.technician, price, order.number, order.money);
                    }

                    if (dgv.Rows.Count != 0)
                    {
                        BathClass.printErrorMsg("未检测到转账单或者结账单");
                        return;
                    }

                    PrintSeatBill.Print_DataGridView(seats_reprint, m_rooms,"", "转账确认单", dgv, printCols, money.ToString(), co_name);
                }
                catch (System.Exception ex)
                {
                    BathClass.printErrorMsg(ex.ToString());
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// 创建台位界面
        /// </summary>
        /// <param name="dao">数据库连接</param>
        /// <param name="options">选项</param>
        /// <param name="seatPanel">面板</param>
        /// <param name="seatTab">标签页</param>
        /// <param name="btn_click">响应回调函数</param>
        /// <param name="cm">右键菜单</param>
        /// <param name="department">部门:桑拿部、客房部</param>
        public static void createSeatByDao(DAO dao, COptions options, Control seatPanel, TabControl seatTab, 
            EventHandler btn_click,EventHandler btn_MouseHover, ContextMenuStrip cm, string department)
        {
            if (MConvert<bool>.ToTypeOrDefault(options.台位类型分页显示, false))       //台位类型是否分页显示
            {
                seatPanel.Visible = false;
                seatTab.Visible = true;
                seatTab.Dock = DockStyle.Fill;

                List<CSeatType> seat_types = new List<CSeatType>();
                if (department == null)
                    seat_types = dao.get_seattypes(null, null);
                else
                    seat_types = dao.get_seattypes("department", department);
                foreach (var stype in seat_types)
                {
                    TabPage tp = create_seat_page(stype.name, seatTab);
                    var seats = dao.get_seats("typeId", stype.id).OrderBy(x => x.text).ToList();
                    creat_seat_per_panel(seats, tp, btn_click,btn_MouseHover, cm);
                }
            }
            else
            {
                seatPanel.Visible = true;
                seatTab.Visible = false;
                seatPanel.Dock = DockStyle.Fill;

                //var seatTypes = dao.get_seattypes("department", department).Select(x => x.id).ToList();
                List<CSeat> seats = new List<CSeat>();
                if (department == null)
                {
                    seats = dao.get_all_seats().OrderBy(x => x.typeId).ThenBy(x => x.text).ToList();
                }
                else
                {
                    seats = dao.get_seats("typeid in (select id from seattype where department='" + department + "')").
                        OrderBy(x => x.typeId).ThenBy(x => x.text).ToList();
                }

                //var seats = dao.get_seats(null, null).OrderBy(x => x.typeId).ThenBy(x => x.text).ToList();
                creat_seat_per_panel(seats, seatPanel, btn_click,btn_MouseHover, cm);

                //if (dao.has_hotel_department())
                //{
                //    seatPanel.Visible = false;
                //    seatTab.Visible = true;
                //    seatTab.Dock = DockStyle.Fill;
                //    TabPage tp = create_seat_page("桑拿部", seatTab);
                //    var seatTypes = dao.get_seattypes("name", "桑拿部").Select(x => x.id).ToList();
                //    var seats = dao.get_seats("typeId", seatTypes).OrderBy(x => x.typeId).ThenBy(x => x.text).ToList();
                //    creat_seat_per_panel(seats, tp, btn_click, cm);

                //    tp = create_seat_page("客房部", seatTab);
                //    seatTypes = dao.get_seattypes("department", "客房部").Select(x => x.id).ToList();
                //    seats = dao.get_seats("typeId", seatTypes).OrderBy(x => x.typeId).ThenBy(x => x.text).ToList();
                //    //seatTypes = dc.SeatType.Where(x => x.department == "客房部").Select(x => x.id);
                //    //seats = dc.Seat.Where(x => seatTypes.Contains(x.typeId)).OrderBy(x => x.typeId).ThenBy(x => x.text).ToList();
                //    creat_seat_per_panel(seats, tp, btn_click, cm);
                //}
                //else
                //{
                //}
            }
        }