예제 #1
0
        private Thread m_thread_seatCard;//手牌线程

        public OpenSeatForm(CSeat seat, bool open)
        {
            m_open = open;
            //var db = new BathDBDataContext(LogIn.connectionString);
            m_Seats.Add(seat);
            seat_length = seat.text.Length;
            dao         = new DAO(LogIn.connectionString);
            chainId     = dao.chainId();

            seatlock       = LogIn.options.启用手牌锁.Value;
            lock_type      = LogIn.options.手牌锁类型;
            auto_seat_card = MConvert <bool> .ToTypeOrDefault(LogIn.options.自动感应手牌, false);

            InitializeComponent();

            seatBox.Enabled = MConvert <bool> .ToTypeOrDefault(LogIn.options.允许手工输入手牌号开牌, false);

            dgv_show();
        }
예제 #2
0
        //包厢管理
        private void btnRoom_Click(object sender, EventArgs e)
        {
            var db = new BathDBDataContext(LogIn.connectionString);

            if (!BathClass.getAuthority(db, LogIn.m_User, "客房管理"))
            {
                GeneralClass.printErrorMsg("不具有权限");
                return;
            }

            if (MConvert <bool> .ToTypeOrDefault(db.Options.FirstOrDefault().启用客房面板, false))
            {
                RoomViewForm rvForm = new RoomViewForm();
                rvForm.ShowDialog();
            }
            else
            {
                var form = new CabViewForm();
                form.ShowDialog();
            }
        }
예제 #3
0
        //获取当前所有已结账消费
        public static double get_paid_expense(BathDBDataContext db, DateTime startTime, ref int count)
        {
            double money    = 0;
            var    accounts = db.Account.Where(x => x.payTime >= startTime && x.abandon == null);

            foreach (Account act in accounts)
            {
                count += act.systemId.Split('|').Count();
                money += MConvert <double> .ToTypeOrDefault(act.cash, 0)
                         - MConvert <double> .ToTypeOrDefault(act.changes, 0)
                         + MConvert <double> .ToTypeOrDefault(act.bankUnion, 0)
                         + MConvert <double> .ToTypeOrDefault(act.creditCard, 0)
                         + MConvert <double> .ToTypeOrDefault(act.coupon, 0)
                         + MConvert <double> .ToTypeOrDefault(act.zero, 0)
                         + MConvert <double> .ToTypeOrDefault(act.server, 0)
                         + MConvert <double> .ToTypeOrDefault(act.deducted, 0)
                         + MConvert <double> .ToTypeOrDefault(act.wipeZero, 0);
            }

            return(Math.Round(money, 0));
        }
예제 #4
0
        //对话框载入
        private void BounusDetailsTableForm_Load(object sender, EventArgs e)
        {
            List <Employee> es = new List <Employee>();

            foreach (var em in db.Employee)
            {
                if (BathClass.getAuthority(db, em, "手工打折"))
                {
                    es.Add(em);
                }
            }
            employee.Items.AddRange(es.Select(x => x.name).ToArray());
            startTime.CustomFormat = "yyyy-MM-dd-HH:mm:ss";
            endTime.CustomFormat   = "yyyy-MM-dd-HH:mm:ss";

            startTime.Value = Convert.ToDateTime(BathClass.Now(LogIn.connectionString).AddMonths(-1).ToShortDateString() + " 00:00:00");

            use_pad = MConvert <bool> .ToTypeOrDefault(LogIn.options.启用客房面板, false);

            dgv_show();
        }
예제 #5
0
        //赠送
        private void BTExtend_Click(object sender, EventArgs e)
        {
            if (wxUser == null)
            {
                BathClass.printErrorMsg("需要选择赠送对象!");
                return;
            }

            if (dgv.CurrentCell == null)
            {
                BathClass.printErrorMsg("需要选择赠送优惠券种类!");
                return;
            }

            string errorDesc = "";

            var couponIds = new List <int>();
            var openIds   = new List <string>();
            var numbers   = new List <int>();

            foreach (DataGridViewRow r in dgvExtend.Rows)
            {
                couponIds.Add(MConvert <int> .ToTypeOrDefault(r.Cells[2].Value, 0));
                openIds.Add(r.Cells[0].Value.ToString());
                numbers.Add(MConvert <int> .ToTypeOrDefault(r.Cells[4].Value, 1));
            }

            bool success = WxCouponManagement.extendMultiCoupon(LogIn.connectionIP, LogIn.options.company_Code, couponIds, openIds, numbers, out errorDesc);

            if (!success)
            {
                BathClass.printErrorMsg(errorDesc);
                return;
            }

            BathClass.printInformation("优惠券赠送成功!");
            this.DialogResult = DialogResult.OK;
            this.Close();
        }
예제 #6
0
        //对话框载入
        private void MemberTypeForm_Load(object sender, EventArgs e)
        {
            offer.Items.AddRange(db.Promotion.Select(x => x.name).ToArray());
            offer.SelectedIndex = 0;
            if (!newElement)
            {
                foreach (Control c in this.Controls)
                {
                    if (c.GetType() == typeof(TextBox) || c.GetType() == typeof(DateTimePicker))
                    {
                        var pro = m_Element.GetType().GetProperty(c.Name);
                        if (pro == null)
                        {
                            continue;
                        }

                        var proVal = pro.GetValue(m_Element, null);
                        if (proVal != null)
                        {
                            c.Text = proVal.ToString();
                        }
                    }
                }
                userOneTime.Checked = MConvert <bool> .ToTypeOrDefault(m_Element.userOneTimeOneDay, false);

                LimitedTimesPerMonth.Checked = MConvert <bool> .ToTypeOrDefault(m_Element.LimitedTimesPerMonth, false);

                TimesPerMonth.Text = m_Element.TimesPerMonth.ToString();
                credits.Checked    = m_Element.credits;
                sms.Checked        = MConvert <bool> .ToTypeOrDefault(m_Element.smsAfterUsing, false);

                var promotion = db.Promotion.FirstOrDefault(x => x.id == m_Element.offerId);
                if (promotion != null)
                {
                    offer.Text = promotion.name;
                }
            }
        }
예제 #7
0
        //编辑
        private void ToolEdit_Click(object sender, EventArgs e)
        {
            if (dgv.CurrentCell == null)
            {
                BathClass.printErrorMsg("需要先选择优惠券所在行!");
                return;
            }

            WxCoupon wxCoupon = new WxCoupon();

            wxCoupon.id = MConvert <int> .ToTypeOrDefault(dgv.CurrentRow.Cells[0].Value, 0);

            wxCoupon.title = dgv.CurrentRow.Cells[1].Value.ToString();
            wxCoupon.value = MConvert <double> .ToTypeOrDefault(dgv.CurrentRow.Cells[2].Value, 0);

            wxCoupon.descp = dgv.CurrentRow.Cells[3].Value.ToString();
            var form = new CouponForm(wxCoupon, this);

            if (form.ShowDialog() == DialogResult.OK)
            {
                dgv_show();
            }
        }
예제 #8
0
        //对话框载入
        private void SeatTypeForm_Load(object sender, EventArgs e)
        {
            menuId.Items.AddRange(db.Menu.Select(x => x.name).ToArray());
            seatDepart.SelectedIndex = 0;
            menuId.SelectedIndex     = 0;

            if (!newSeatType)
            {
                name.Text               = m_SeatType.name;
                population.Text         = m_SeatType.population.ToString();
                seatDepart.Text         = m_SeatType.department;
                depositMin.Text         = m_SeatType.depositeAmountMin.ToString();
                depositRequired.Checked = MConvert <bool> .ToTypeOrDefault(m_SeatType.depositeRequired, false);

                depositMin.Enabled = depositRequired.Checked;

                var menu = db.Menu.FirstOrDefault(x => x.id == m_SeatType.menuId);
                if (menu != null)
                {
                    menuId.Text = menu.name;
                }
            }
        }
예제 #9
0
        //对话框载入
        private void SeatForm_Load(object sender, EventArgs e)
        {
            typeName.Items.AddRange(db.SeatType.Select(x => x.name).ToArray());
            if (typeName.Items.Count != 0)
            {
                typeName.SelectedIndex = 0;
            }
            if (!newSeat)
            {
                id.Text = m_Seat.text;
                //if (m_Seat.name != null)
                name.Text     = m_Seat.name;
                typeName.Text = db.SeatType.FirstOrDefault(x => x.id == m_Seat.typeId).name;
                oId.Text      = m_Seat.oId;
                note.Text     = m_Seat.note;
            }

            lock_type = LogIn.options.手牌锁类型;
            m_td      = new Thread(new ThreadStart(seat_card_thread));
            if (MConvert <bool> .ToTypeOrDefault(LogIn.options.启用手牌锁, false))
            {
                m_td.Start();
            }
        }
예제 #10
0
        private void p_BtnDoneClicked(object sender, EventArgs e)
        {
            LogPanel logPanel = sender as LogPanel;
            var      log      = db.DepartmentLog.FirstOrDefault(x => x.id == logPanel.id);

            if (MConvert <bool> .ToTypeOrDefault(log.done, false))
            {
                log.done = false;
            }
            else
            {
                log.done     = true;
                log.urgent   = false;
                log.doneDate = DateTime.Now;
                logPanel.set_btnUrgent_text("加急");
            }
            db.SubmitChanges();

            bool done = MConvert <bool> .ToTypeOrDefault(log.done, false);

            bool urgent = MConvert <bool> .ToTypeOrDefault(log.urgent, false);

            logPanel.set_panel_status(done, urgent, log.doneDate, log.urgentDate, log.dueTime);
        }
예제 #11
0
        //对话框载入
        private void EmployeeForm_Load(object sender, EventArgs e)
        {
            stock.Items.AddRange(db.Stock.Select(x => x.name).ToArray());
            provider.Items.AddRange(db.Provider.Select(x => x.name).ToArray());
            goodsCat.Items.AddRange(db.GoodsCat.Select(x => x.name).ToArray());
            unit.Items.AddRange(db.Unit.Select(x => x.name).ToArray());

            var employees = db.Employee.Select(x => x.name);

            checker.Items.AddRange(employees.ToArray());
            transactor.Items.AddRange(employees.ToArray());

            if (newStockin)
            {
                checker.Text    = LogIn.m_User.name;
                transactor.Text = LogIn.m_User.name;
            }
            else
            {
                var goodsCatID   = db.StorageList.FirstOrDefault(x => x.name == stockin.name).goodsCatId;
                var goodsCatName = db.GoodsCat.FirstOrDefault(x => x.id == goodsCatID).name;
                goodsCat.Text = goodsCatName;
                name.Text     = stockin.name;
                stock.Text    = db.Stock.FirstOrDefault(x => x.id == stockin.stockId).name;
                unit.Text     = stockin.unit;
                unit.Text     = stockin.amount.ToString();
                cost.Text     = stockin.cost.ToString();
                amount.Text   = stockin.amount.ToString();
                money.Text    = stockin.money.ToString();
                provider.Text = MConvert <string> .ToTypeOrDefault(db.Provider.FirstOrDefault(x => x.id == stockin.providerId).name, "");

                checker.Text            = stockin.checker;
                transactor.Text         = stockin.transactor;
                dtPickerIntoStock.Value = stockin.date;
            }
        }
예제 #12
0
        private void TextDays_TextChanged(object sender, EventArgs e)
        {
            int d = MConvert <int> .ToTypeOrDefault(TextDays.Text.Trim(), 1);

            days.Value = Convert.ToDateTime(DateTime.Now.AddDays(d).ToString("yyyy-MM-dd") + " 12:00:00");
        }
예제 #13
0
        //对话框载入
        private void MenuForm_Load(object sender, EventArgs e)
        {
            techRatioCat.SelectedIndex = 0;
            unit.Items.AddRange(db.Unit.Select(x => x.name).ToArray());

            if (!newMenu)
            {
                name.Text          = m_menu.name;
                unit.Text          = m_menu.unit;
                catgory.Text       = db.Catgory.FirstOrDefault(x => x.id == m_menu.catgoryId).name;
                technician.Checked = m_menu.technician;
                waiter.Checked     = MConvert <bool> .ToTypeOrDefault(m_menu.waiter, false);

                price.Text            = m_menu.price.ToString();
                note.Text             = m_menu.note;
                timeLimitHour.Text    = m_menu.timeLimitHour.ToString();
                timeLimitMiniute.Text = m_menu.timeLimitMiniute.ToString();
                timeLimitType.Text    = m_menu.timeLimitType;

                if (Convert.ToBoolean(m_menu.addAutomatic))
                {
                    addAutomatic.Checked = true;
                    addType.Text         = m_menu.addType;
                    if (addType.Text == "按时间")
                    {
                        addMoney.Text = m_menu.addMoney.ToString();
                    }
                }
                if (technician.Checked)
                {
                    if (m_menu.techRatioCat != null)
                    {
                        techRatioCat.Text = m_menu.techRatioCat;
                    }
                    if (m_menu.techRatioType != null)
                    {
                        techRatioType.Text = m_menu.techRatioType;
                    }
                    if (m_menu.onRatio != null)
                    {
                        onRatio.Text = m_menu.onRatio.ToString();
                    }
                    if (orderRatio.Text != null)
                    {
                        orderRatio.Text = m_menu.orderRatio.ToString();
                    }
                }

                waiterRatio.Enabled     = waiter.Checked;
                waiterRatioType.Enabled = waiter.Checked;
                if (waiter.Checked)
                {
                    waiterRatioType.SelectedIndex = MConvert <int> .ToTypeOrDefault(m_menu.waiterRatioType, 0);

                    waiterRatio.Text = m_menu.waiterRatio.ToString();
                }
                dgv_show();
            }
            timeLimitHour.Enabled    = addAutomatic.Checked;
            timeLimitMiniute.Enabled = addAutomatic.Checked;
            techRatioType.Enabled    = (techRatioCat.Text == "按比例");
        }
예제 #14
0
        //添加储值卡
        private void btnAdd_Click(object sender, EventArgs e)
        {
            double paid_money = get_paid_money();

            if (paid_money >= m_money)
            {
                BathClass.printErrorMsg("刷卡金额已经足够!");
                return;
            }

            if (id.Text != "")
            {
                m_member = dao.get_CardInfo("CI_CardNo='" + id.Text + "'");
            }
            else
            {
                string card_data    = "";
                string company_code = LogIn.options.companyCode;

                bool st       = false;
                var  cardType = memberSetting.cardType;
                if (cardType == "SLE4442")
                {
                    st = ICCard.read_data_4442(company_code, ref card_data);
                }
                else if (cardType == "M1")
                {
                    st = ICCard.read_data_M1(company_code, ref card_data);
                }
                if (!st)
                {
                    return;
                }

                m_member = dao.get_CardInfo("CI_CardNo='" + card_data + "'");
            }

            if (m_member == null)
            {
                BathClass.printErrorMsg("非本公司卡!");
                return;
            }
            if (m_member.state == "挂失")
            {
                BathClass.printErrorMsg("卡已挂失,无法使用!");
                return;
            }
            if (m_member.state == "入库")
            {
                BathClass.printErrorMsg("卡已入库,但未激活,无法使用!");
                return;
            }
            if (m_member.state == "停用")
            {
                BathClass.printErrorMsg("卡已停用,无法使用!,新卡卡号为:" + m_member.CI_Special1 + ",补卡时间为:" +
                                        m_member.CI_SpecialDate1.Value.ToString("yyyy-MM-dd HH:mm"));
                return;
            }

            string memberType = "";
            var    t          = dao.get_MemberType("id=" + m_member.CI_CardTypeNo);

            if (t != null)
            {
                memberType = t.name;
            }
            if (t != null && MConvert <bool> .ToTypeOrDefault(t.userOneTimeOneDay, false) &&
                dao.exist_instance("CardCharge", "datediff(day,CC_InputDate,getdate())=0 and cc_itemExplain!='售卡收' and cc_cardno='" + m_member.CI_CardNo + "'"))
            {
                BathClass.printErrorMsg("此卡被限定一天只能使用一次,今天已经使用过!");
                return;
            }
            if (t != null && MConvert <bool> .ToTypeOrDefault(t.LimitedTimesPerMonth, false) &&
                dao.get_memberCard_useTimes_this_month(m_member.CI_CardNo) >= t.TimesPerMonth)
            {
                BathClass.printErrorMsg("此卡被限定每月只能使用" + t.TimesPerMonth + "次,本月已达额度!");
                return;
            }
            if (m_memberList.Keys.Contains(m_member.CI_CardNo))
            {
                BathClass.printErrorMsg("已经添加卡号为" + m_member.CI_CardNo + "的会员卡,不能重复添加!");
                return;
            }

            if (m_use_finger_pwd)
            {
                var form = new MemberFingerForm(m_member);
                form.ShowDialog();

                if (!form.verified)
                {
                    BathClass.printErrorMsg("验证指纹失败!");
                    return;
                }
            }

            var    cc    = dao.get_CardCharges("CC_CardNo='" + m_member.CI_CardNo + "'");
            double debit = MConvert <int> .ToTypeOrDefault(cc.Sum(x => x.CC_DebitSum), 0);

            double lend = MConvert <int> .ToTypeOrDefault(cc.Sum(x => x.CC_LenderSum), 0);

            double balance = debit - lend;

            var c = MConvert <int> .ToTypeOrDefault(m_member.CI_CreditsUsed, 0);

            var cu = memberSetting.money.Value;
            int cs = (int)(lend / cu - c);

            double hasto_money = 0;

            if (balance <= m_money - paid_money)
            {
                hasto_money = balance;
            }
            else
            {
                hasto_money = m_money - paid_money;
            }

            m_memberList[m_member.CI_CardNo] = hasto_money;
            dgv.Rows.Add(m_member.CI_CardNo, m_member.CI_Name, m_member.CI_Telephone, memberType, balance, cs, hasto_money);

            id.Text = "";
        }
예제 #15
0
        //微信赠送项目明细
        private void find_groupBuy_donor()
        {
            dgv.Columns.Clear();
            add_cols_to_dgv(dgv, "编号");
            add_cols_to_dgv(dgv, "发生时间");
            add_cols_to_dgv(dgv, "项目名称");
            add_cols_to_dgv(dgv, "打折员工");
            add_cols_to_dgv(dgv, "打折时间");
            add_cols_to_dgv(dgv, "技师号");
            add_cols_to_dgv(dgv, "手牌号");
            add_cols_to_dgv(dgv, "数量");
            add_cols_to_dgv(dgv, "金额");
            add_cols_to_dgv(dgv, "输入员工");
            add_cols_to_dgv(dgv, "结账单号");
            add_cols_to_dgv(dgv, "单据号");

            if (cboxBill.Checked && tbBill.Text != "")
            {
                var o = db.HisOrders.FirstOrDefault(x => x.billId == tbBill.Text);
                if (o == null)
                {
                    BathClass.printErrorMsg("输入单据号不存在!");
                    return;
                }
                dgv.Rows.Add(o.id,
                             o.inputTime,
                             o.menu,
                             o.donorEmployee,
                             o.donorTime,
                             o.technician,
                             o.text,
                             o.number,
                             o.money,
                             o.inputEmployee,
                             o.accountId,
                             o.billId);
                return;
            }

            IQueryable <YouSoftBathGeneralClass.Menu> menuList = db.Menu.OrderBy(x => x.catgoryId);

            if (menu.SelectedIndex != 0)
            {
                var catId = db.Catgory.FirstOrDefault(x => x.name == menu.Text).id;
                menuList = db.Menu.Where(x => x.catgoryId == catId);
            }

            var orders = db.HisOrders.Where(x => x.donorExplain != null && x.donorExplain == Constants.GROUPBUY_DONOR);

            orders = orders.Where(x => x.inputTime >= lastTime && x.inputTime <= thisTime && x.deleteEmployee == null);

            foreach (var m in menuList)
            {
                var ol = orders.Where(x => x.menu == m.name);
                foreach (HisOrders o in ol)
                {
                    dgv.Rows.Add(o.id,
                                 o.inputTime,
                                 m.name,
                                 o.donorEmployee,
                                 o.donorTime,
                                 o.technician,
                                 o.text,
                                 o.number,
                                 o.money,
                                 o.inputEmployee,
                                 o.accountId,
                                 o.billId);
                }
            }

            if (!MConvert <bool> .ToTypeOrDefault(LogIn.options.录单输入单据编号, false))
            {
                dgv.Columns[11].Visible = false;
            }
        }
예제 #16
0
        //检查库存
        private void check_storageList()
        {
            try
            {
                var    db         = new BathDBDataContext(LogIn.connectionString);
                string msg        = "";
                var    main_stock = db.Stock.FirstOrDefault(x => x.main != null && x.main.Value);
                if (main_stock == null)
                {
                    return;
                }

                var main_stock_id  = main_stock.id;
                var stockIns       = db.StockIn.Where(x => x.stockId == main_stock_id);
                var stockOuts      = db.StockOut.Where(x => x.stockId == main_stock_id);
                var orderStockOuts = db.OrderStockOut.Where(x => x.stockId == main_stock_id && x.deleteEmployee == null);
                var pans           = db.Pan.Where(x => x.stockId == main_stock_id);

                var msl = db.StorageList.Where(x => x.minAmount != null);
                foreach (var sl in msl)
                {
                    double number_Ins       = 0;
                    double number_Outs      = 0;
                    double number_OrderOuts = 0;
                    double number_pans      = 0;

                    string name          = sl.name;
                    var    name_stockIns = stockIns.Where(x => x.name == name).Where(x => x.amount != null);
                    if (name_stockIns.Any())
                    {
                        number_Ins = name_stockIns.Sum(x => x.amount).Value;
                    }

                    var name_stockOuts = stockOuts.Where(x => x.name == name).Where(x => x.amount != null);
                    if (name_stockOuts.Any())
                    {
                        number_Outs = MConvert <double> .ToTypeOrDefault(name_stockOuts.Sum(x => x.amount), 0);
                    }

                    var name_orderStockOuts = orderStockOuts.Where(x => x.name == name).Where(x => x.amount != null);
                    if (name_orderStockOuts.Any())
                    {
                        number_OrderOuts = MConvert <double> .ToTypeOrDefault(name_orderStockOuts.Sum(x => x.amount), 0);
                    }

                    var name_pans = pans.Where(x => x.name == name).Where(x => x.amount != null);
                    if (name_pans.Any())
                    {
                        number_pans = MConvert <double> .ToTypeOrDefault(name_pans.Sum(x => x.amount), 0);
                    }

                    double number_now = number_Ins + number_pans - number_Outs - number_OrderOuts;
                    if (sl.minAmount >= number_now)
                    {
                        msg += main_stock.name + ":" + sl.name + "的库存量为" +
                               number_now.ToString() + ";已小于最低库存量:" + sl.minAmount + "\n";
                    }
                }
                if (msg != "")
                {
                    MessageBox.Show(msg);
                }
            }
            catch (System.Exception e)
            {
                BathClass.printErrorMsg(e.Message);
            }
        }
예제 #17
0
        //发送短信线程
        private void sendMsg_thread()
        {
            try
            {
                String TypeStr        = "";
                String CopyRightToCOM = "";
                String CopyRightStr   = "//上海迅赛信息技术有限公司,网址www.xunsai.com//";

                this.Invoke(new delegate_no_para(show_smsMsgForm));
                this.Invoke(new delegate_msgForm_addMsg(msgForm_addMsg), new object[] { "正在连接短信猫......." });
                if (SmsClass.Sms_Connection(CopyRightStr, uint.Parse(smsPort[3].ToString()), uint.Parse(smsBaud), out TypeStr, out CopyRightToCOM) != 1)
                {
                    this.Invoke(new delegate_no_para(close_smsMsgForm));
                    BathClass.printErrorMsg("短信猫连接失败,请重试!");
                    return;
                }

                List <string> phones   = new List <string>();
                string        phone    = "";
                string        fileName = "短信发送-" + DateTime.Now.ToString("yyMMddHHmm") + ".txt";
                IOUtil.insert_file(" 卡号   姓名    电话          短信", fileName);
                int i = 0;

                string txtStart = TextMsgStart.Text.Trim();
                if (txtStart != "")
                {
                    i = MConvert <int> .ToTypeOrDefault(txtStart, 1) - 1;
                }
                string sent_flag = "成功";
                while (!stop_flag)
                {
                    if (i >= dgv.Rows.Count)
                    {
                        break;
                    }

                    if (smsMsgForm.IsDisposed)
                    {
                        SmsClass.Sms_Disconnection();
                        break;
                    }
                    sent_flag = "成功";
                    DataGridViewRow r = dgv.Rows[i];
                    this.Invoke(new delegate_change_current_cell(change_current_cell), new object[] { i });
                    this.Invoke(new delegate_change_row_color(change_row_color), new object[] { r, Color.Cyan });
                    phone = MConvert <string> .ToTypeOrDefault(r.Cells[2].Value, "");

                    if (phone.Length != 11 || phones.Contains(phone))
                    {
                        i++;
                        this.Invoke(new delegate_change_row_color(change_row_color), new object[] { r, Color.OrangeRed });
                        continue;
                    }
                    if (SmsClass.Sms_Send(phone, msg.Text) == 0)
                    {
                        sent_flag = "失败";
                        this.Invoke(new delegate_change_row_color(change_row_color), new object[] { r, Color.OrangeRed });
                    }
                    else
                    {
                        phones.Add(phone);
                        this.Invoke(new delegate_change_row_color(change_row_color), new object[] { r, Color.LightGreen });
                    }

                    this.Invoke(new delegate_msgForm_addMsg(msgForm_addMsg),
                                new object[] { "卡号:" + MConvert <string> .ToTypeOrDefault(r.Cells[0].Value, "") +
                                               ",姓名:" + MConvert <string> .ToTypeOrDefault(r.Cells[1].Value, "") +
                                               ",电话:" + phone +
                                               ",发送:" + sent_flag });
                    IOUtil.insert_file(MConvert <string> .ToTypeOrDefault(r.Cells[0].Value, "") + "   " +
                                       MConvert <string> .ToTypeOrDefault(r.Cells[1].Value, "") + "   " + phone + "   " + sent_flag, fileName);
                    i++;
                }

                IOUtil.insert_file("一共发送:" + phones.Count.ToString() + "条短信", fileName);
                this.Invoke(new delegate_msgForm_addMsg(msgForm_addMsg), new object[] { "发送结束,正在关闭短信猫!" });
                SmsClass.Sms_Disconnection();
                this.Invoke(new delegate_msgForm_addMsg(msgForm_addMsg), new object[] { "短信发送结束,短信猫关闭成功!" });
            }
            catch (System.Exception e)
            {
                BathClass.printErrorMsg(e.Message);
            }
        }
예제 #18
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
                //{
                //}
            }
        }
예제 #19
0
        //对话框载入
        private void Form1_Load(object sender, EventArgs e)
        {
            connectionIP = IOUtil.get_config_by_key(ConfigKeys.KEY_CONNECTION_IP);
            if (connectionIP == "")
            {
                PCListForm pCListForm = new PCListForm();
                if (pCListForm.ShowDialog() != DialogResult.OK)
                {
                    this.Close();
                    return;
                }
                connectionIP = pCListForm.ip;
                IOUtil.set_config_by_key(ConfigKeys.KEY_CONNECTION_IP, connectionIP);
            }
            dao = new DAO(connectionString);
            if (!dao.check_net())
            {
                BathClass.printErrorMsg("连接IP不对或者网络不通,请重试!");
                this.Close();
                return;
            }

            _options       = dao.get_options();
            m_company      = _options.companyName;
            print_tech_msg = MConvert <bool> .ToTypeOrDefault(options.打印技师派遣单, false);

            user_card = MConvert <bool> .ToTypeOrDefault(options.启用员工服务卡, false);

            IPHostEntry ipe = Dns.GetHostEntry(Dns.GetHostName());

            foreach (var ip in ipe.AddressList)
            {
                m_ip = ip.ToString();
                if (System.Text.RegularExpressions.Regex.IsMatch(m_ip, "[0-9]{1,3}//.[0-9]{1,3}//.[0-9]{1,3}//.[0-9]{1,3}"))
                {
                    break;
                }
            }

            setMax();
            //dgv.ColumnHeadersDefaultCellStyle.Font = new Font("宋体", 20);
            //dgv.RowsDefaultCellStyle.Font = new Font("宋体", 20);
            //dgv_show();

            m_thread = new Thread(new ThreadStart(detect_msg));
            m_thread.IsBackground = true;
            m_thread.Start();

            m_thread_tech = new Thread(new ThreadStart(detect_tech_index));
            m_thread_tech.IsBackground = true;
            m_thread_tech.Start();

            clock_timer          = new System.Timers.Timer();
            clock_timer.Interval = 1000;
            clock_timer.Elapsed += new System.Timers.ElapsedEventHandler(clock_timer_Elapsed);
            clock_timer.Enabled  = true;

            m_player = new SoundPlayer();

            techId.Focus();

            m_thread_clearMemory = new Thread(new ThreadStart(clear_Memory));
            m_thread_clearMemory.IsBackground = true;
            m_thread_clearMemory.Start();

            SplitGender.SplitterDistance = SplitGender.Width * 2 / 3;
            create_tech_panel();
        }
예제 #20
0
        private void order_menu(CMenu menu)
        {
            string pars = "menu,text,systemId,number,money,inputTime,paid";
            string vals = "'" + menu.name + "','" + m_Seat.text + "','" + m_Seat.systemId + "',1," + menu.price + ",getdate(),'False'";

            if (inputBillId)
            {
                var form = new InputNumberStr("输入单据编号");
                if (form.ShowDialog() != DialogResult.OK)
                {
                    BathClass.printErrorMsg("需要输入单据编号");
                    return;
                }
                pars += ",billId";
                vals += ",'" + form.str + "'";
            }

            if (menu.technician)
            {
                pars += ",technician";
                if (!m_has_user)
                {
                    InputEmployee techForm = new InputEmployee("请输入技师号...");
                    if (techForm.ShowDialog() != DialogResult.OK)
                    {
                        BathClass.printErrorMsg("需要选择技师!");
                        return;
                    }
                    vals += ",'" + techForm.employee.id + "'";
                }
                else
                {
                    vals += ",'" + m_user.id + "'";
                }

                //是否需要输入点钟轮钟
                if (inputTechType)
                {
                    var form = new DianLunForm();
                    if (form.ShowDialog() != DialogResult.OK)
                    {
                        BathClass.printErrorMsg("需要输入上钟类型!");
                        return;
                    }
                    pars += ",techType";
                    vals += ",'" + form.tech_type + "'";
                }
            }
            if (!m_has_user && MConvert <bool> .ToTypeOrDefault(menu.waiter, false))
            {
                InputEmployee techForm = new InputEmployee("请输入服务员工号...");
                if (techForm.ShowDialog() != DialogResult.OK)
                {
                    BathClass.printErrorMsg("需要输入录单员!");
                    return;
                }
                pars += ",inputEmployee";
                vals += ",'" + techForm.employee.id + "'";
            }
            else
            {
                pars += ",inputEmployee";
                vals += ",'" + m_user.id + "'";
            }

            string cmd_str = @"insert into [Orders](" + pars + ") values(" + vals + ")";

            if (!dao.execute_command(cmd_str))
            {
                BathClass.printErrorMsg("录单失败,请重试!");
                return;
            }

            //BathClass.find_combo_duplicated(m_con_str, m_Seat.systemId, m_Seat.text);
            BathClass.find_combo(m_con_str, m_Seat.systemId, m_Seat.text);
            dgvExpense_show();
            Thread td = new Thread(delegate() { print_kitchen(menu); });

            td.Start();
        }
예제 #21
0
        //确定
        private void btnOk_Click(object sender, EventArgs e)
        {
            if (btnOk.Text == "读卡")
            {
                get_member();
            }
            else if (btnOk.Text == "激活")
            {
                if (m_use_finder_pwd && m_finger == null)
                {
                    if (BathClass.printAskMsg("系统指定需要使用指纹密码,是否确定放弃录入指纹?") != DialogResult.Yes)
                    {
                        return;
                    }
                }
                var m_waiter = dao.get_Employee("id='" + tb_waiter.Text + "'");
                if (m_waiter == null)
                {
                    BathClass.printErrorMsg("输入服务员工号不存在!");
                    return;
                }

                if (tb_cash.Text.Trim() == "" && tb_bank.Text.Trim() == "")
                {
                    BathClass.printErrorMsg("需要输入金额!");
                    return;
                }

                double card_val = find_card_value(MConvert <double> .ToTypeOrDefault(balance.Text, 0));
                if (card_val != -1 && MConvert <double> .ToTypeOrDefault(tb_cash.Text, 0) + MConvert <double> .ToTypeOrDefault(tb_bank.Text, 0) < card_val)
                {
                    BathClass.printErrorMsg("付款金额不足");
                    return;
                }

                string pars = "";
                string vals = "";

                pars = "memberId";
                vals = "'" + m_member.CI_CardNo + "'";

                pars += ",payEmployee";
                vals += ",'" + m_waiter.id + "'";

                pars += ",payTime";
                vals += ",getdate()";

                pars += ",macAddress";
                vals += ",'" + PCUtil.getMacAddr_Local() + "'";

                Dictionary <string, string> pay_info = new Dictionary <string, string>();
                if (tb_bank.Text.Trim() != "")
                {
                    pars          += ",bankUnion";
                    vals          += ",'" + tb_bank.Text + "'";
                    pay_info["银联"] = tb_bank.Text;
                }

                if (tb_cash.Text.Trim() != "")
                {
                    pars          += ",cash";
                    vals          += ",'" + tb_cash.Text + "'";
                    pay_info["现金"] = tb_cash.Text;
                }

                if (balance.Text != "")
                {
                    pars += ",balance";
                    vals += ",'" + balance.Text + "'";
                }

                if (tb_seat.Text != "")
                {
                    pars += ",seat";
                    vals += ",'" + tb_seat.Text + "'";
                }

                string cmd_str = @"insert into [CardSale](" + pars + ") values(" + vals + ")";

                if (m_finger == null || m_finger == "")
                {
                    m_finger = "null";
                }
                else
                {
                    m_finger = "'" + m_finger + "'";
                }
                cmd_str += @"update [CardInfo] set state='在用',CI_Password="******" where CI_CardNo='" + id.Text + "'";
                if (!dao.execute_command(cmd_str))
                {
                    BathClass.printErrorMsg("会员激活失败,请重试!");
                    return;
                }

                string seat = null;
                if (tb_seat.Text != "")
                {
                    seat = tb_seat.Text;
                }
                PrintMemberActivateMsg.Print_DataGridView(id.Text, type.Text, balance.Text, LogIn.m_User.id,
                                                          DateTime.Now.ToString("MM-dd HH:mm"), LogIn.options.companyName, pay_info, seat);
                this.DialogResult = DialogResult.OK;
            }
            else if (btnOk.Text == "退卡")
            {
                if (BathClass.printAskMsg("确定退还卡号:" + m_member.CI_CardNo + "?") != DialogResult.Yes)
                {
                    return;
                }

                if (dao.exist_instance("CardCharge", "CC_CardNo='" + m_member.CI_CardNo + "' and (CC_ItemExplain='会员刷卡' or CC_ItemExplain='会员打折')"))
                {
                    BathClass.printErrorMsg("已有消费记录,不能退卡");
                    return;
                }
                string cmd_str = @" update cardSale set abandon='" + LogIn.m_User.id + "' where id in (select top 1 id from cardsale where memberId='" + id.Text + "' order by id desc)";
                cmd_str += @"update [CardInfo] set state='入库' where CI_CardNo='" + id.Text + "'";

                if (!dao.execute_command(cmd_str))
                {
                    BathClass.printErrorMsg("退卡失败,请重试!");
                    return;
                }

                this.DialogResult = DialogResult.OK;
            }
        }
예제 #22
0
        //确定
        private void btnOk_Click(object sender, EventArgs e)
        {
            if (name.Text.Trim() == "")
            {
                BathClass.printErrorMsg("需要输入姓名");
                name.Focus();
                return;
            }

            if (deposit.Text.Trim() == "" && TextBank.Text.Trim() == "")
            {
                BathClass.printErrorMsg("需要输入押金");
                deposit.Focus();
                return;
            }

            var seat = dao.get_seat("text", roomNumber.Text);

            if (seat == null)
            {
                BathClass.printErrorMsg("房间号" + roomNumber.Text + "不存在");
                return;
            }

            if (seat.status != SeatStatus.AVILABLE && seat.status != SeatStatus.PAIED && seat.status != SeatStatus.RESERVE)
            {
                BathClass.printErrorMsg("房间号" + roomNumber.Text + "不可用");
                return;
            }

            if (seat.status == SeatStatus.RESERVE && name.Text != seat.name)
            {
                if (BathClass.printAskMsg("开房客人信息与预定客人信息不一致,是否继续?") != DialogResult.Yes)
                {
                    return;
                }
            }

            if (name.Text == "")
            {
                BathClass.printErrorMsg("需要输入客人姓名!");
                return;
            }

            int cardNo = 0;

            byte[] buff = new byte[200];
            //int rt = RoomProRFL.initializeUSB(1);
            string BDate = DateTime.Now.ToString("yyMMddHHmm");
            string EDate = days.Value.ToString("yyMMddHHmm");

            int hotelId = MConvert <int> .ToTypeOrDefault(IOUtil.get_config_by_key(ConfigKeys.KEY_HOTELID), -1);

            if (hotelId == -1)
            {
                BathClass.printErrorMsg("未定义酒店标志!");
                return;
            }
            //rt = RoomProRFL.ReadCard(1, buff);
            //if (rt != 0)
            //{
            //    BathClass.printErrorMsg("未放置房卡或者房卡异常!");
            //    return;
            //}

            int rt = RoomProRFL.GuestCard(1, hotelId, cardNo, 0, 0, 1, BDate, EDate, seat.oId, buff);

            RoomProRFL.Buzzer(1, 40);
            if (rt != 0)
            {
                BathClass.printErrorMsg("开房失败!");
                return;
            }

            if (seat.status == SeatStatus.PAIED)
            {
                dao.reset_seat("text='" + seat.text + "'");
                //BathClass.reset_seat(seat);
                //dc_new.SubmitChanges();
            }

            string systemId = dao.systemId();

            StringBuilder sb            = new StringBuilder();
            double        money_deposit = MConvert <double> .ToTypeOrDefault(deposit.Text, 0);

            double money_bank = MConvert <double> .ToTypeOrDefault(TextBank.Text, 0);

            sb.Append(@" update [Seat] set openEmployee='");
            sb.Append(LogIn.m_User.id);
            sb.Append("', openTime=getdate(), systemId='");
            sb.Append(systemId);
            sb.Append(@"',chainId='").Append(chainId).Append("',deposit=").Append(money_deposit.ToString()).
            Append(",depositBank=").Append(money_bank.ToString()).Append(",status=2,name='");
            sb.Append(name.Text).Append("'");
            sb.Append(",dueTime='").Append(days.Value.ToString("yyyy-MM-dd HH:mm:ss") + "'");
            if (phone.Text.Trim() != "")
            {
                sb.Append(",phone='").Append(phone.Text.Trim()).Append("'");
            }
            //seat.phone = phone.Text.Trim();
            sb.Append(" where text='").Append(roomNumber.Text).Append("'");
            sb.Append(" insert into [SystemIds](systemId) values('" + systemId + "') ");
            var menu = dao.get_seat_menu(seat.text);

            //SeatType seatType = dc_new.SeatType.FirstOrDefault(x => x.id == seat.typeId);
            //var menu = dc_new.Menu.FirstOrDefault(x => x.id == seatType.menuId);
            if (!CheckZhong.Checked && menu != null)
            {
                sb.Append(@" insert into [Orders](menu, text,systemId,number,money,inputTime,inputEmployee,paid) ");
                sb.Append(@"values('" + menu.name + "','" + seat.text + "','" + systemId + "',1," + menu.price + ",getdate(),'");
                sb.Append(LogIn.m_User.id + "','False')");
            }
            else if (CheckZhong.Checked)
            {
                var zhong_menu = dao.get_Menu("name", "钟点房");
                sb.Append(@" insert into [Orders](menu, text,systemId,number,money,inputTime,inputEmployee,paid) ");
                sb.Append(@"values('" + zhong_menu.name + "','" + seat.text + "','" + systemId + "',1," + zhong_menu.price + ",getdate(),'");
                sb.Append(LogIn.m_User.id + "','False')");
            }

            //dc_new.SubmitChanges();

            if (!dao.execute_command(sb.ToString()))
            {
                BathClass.printErrorMsg("开房失败,请重试!");
                return;
            }

            string now = DateTime.Now.ToString("yyy-MM-dd HH:ss");

            PrintRoomDepositReceipt.Print_DataGridView("押金单客人联", seat, LogIn.m_User.name,
                                                       name.Text, phone.Text, now, days.Value.ToString("yyyy-MM-dd HH:mm"), deposit.Text,
                                                       LogIn.options.companyName);

            PrintRoomDepositReceipt.Print_DataGridView("押金单存根联", seat, LogIn.m_User.name,
                                                       name.Text, phone.Text, now, days.Value.ToString("yyyy-MM-dd HH:mm"), deposit.Text,
                                                       LogIn.options.companyName);
            this.DialogResult = DialogResult.OK;
            this.Close();
        }
예제 #23
0
        //显示清单
        private void dgv_show()
        {
            DateTime dt_et = DateTime.Parse(et.Value.Date.ToString("yyyy-MM-dd") + " 23:59:59");

            dgv.Rows.Clear();
            double totalLossAmout = 0;
            string stockSel       = stockTree.SelectedNode.Text;

            if (stockSel == "所有仓库")
            {
                //BathClass.printErrorMsg("请选择仓库");
                return;
            }
            else
            {
                int selId = db.Stock.FirstOrDefault(x => x.name == stockSel).id;

                var stockIns       = db.StockIn.Where(x => x.stockId == selId).Where(x => x.date <= dt_et);
                var stockOuts      = db.StockOut.Where(x => x.stockId == selId).Where(x => x.date <= dt_et);
                var orderStockOuts = db.OrderStockOut.Where(x => x.stockId == selId && x.deleteEmployee == null).Where(x => x.date <= dt_et);
                var pans           = db.Pan.Where(x => x.stockId == selId).Where(x => x.date < dt_et);

                var name_Ins   = stockIns.Select(x => x.name);
                var name_outs  = stockOuts.Select(x => x.name);
                var name_OOuts = orderStockOuts.Select(x => x.name);

                var name_all = name_Ins.Union(name_outs).Union(name_OOuts).Distinct();
                foreach (var name in name_all)
                {
                    double number_Ins       = 0;
                    double number_Outs      = 0;
                    double number_OrderOuts = 0;
                    double number_pans      = 0;

                    var name_stockIns = stockIns.Where(x => x.name == name).Where(x => x.amount != null);
                    if (name_stockIns.Any())
                    {
                        number_Ins = name_stockIns.Sum(x => x.amount).Value;
                    }

                    var name_stockOuts = stockOuts.Where(x => x.name == name).Where(x => x.amount != null);
                    if (name_stockOuts.Any())
                    {
                        number_Outs = MConvert <double> .ToTypeOrDefault(name_stockOuts.Sum(x => x.amount), 0);
                    }

                    var name_orderStockOuts = orderStockOuts.Where(x => x.name == name).Where(x => x.amount != null);
                    if (name_orderStockOuts.Any())
                    {
                        number_OrderOuts = MConvert <double> .ToTypeOrDefault(name_orderStockOuts.Sum(x => x.amount), 0);
                    }

                    var name_pans = pans.Where(x => x.name == name).Where(x => x.amount != null);
                    if (name_pans.Any())
                    {
                        number_pans = MConvert <double> .ToTypeOrDefault(name_pans.Sum(x => x.amount), 0);
                    }

                    double number_Ins_last  = 0; //上月结存
                    double number_Outs_last = 0; //上月结存
                    double number_Sale_last = 0; //上月结存
                    double number_pans_last = 0; //上月结存

                    double number_Ins_this  = 0; //本月进货
                    double number_Outs_this = 0; //本月出货
                    double number_Sale_this = 0; //销售消耗
                    double number_pans_this = 0; //销售消耗

                    double unitPrice = 0;        //产品单价
                    double totalCost = 0;        //产品总价



                    #region  月数据
                    //var first_day_this_month = DateTime.Now.AddDays(1 - DateTime.Now.Day);
                    var first_day_this_month = dt_et.AddDays(1 - DateTime.Now.Day);

                    var stockIns_last = name_stockIns.Where(x => x.date < first_day_this_month);
                    if (stockIns_last.Any())
                    {
                        number_Ins_last = stockIns_last.Sum(x => x.amount).Value;
                    }

                    var stockOuts_last = name_stockOuts.Where(x => x.date < first_day_this_month);
                    if (stockOuts_last.Any())
                    {
                        number_Outs_last = MConvert <double> .ToTypeOrDefault(stockOuts_last.Sum(x => x.amount), 0);
                    }

                    var orderStockOuts_last = name_orderStockOuts.Where(x => x.date < first_day_this_month);
                    if (orderStockOuts_last.Any())
                    {
                        number_Sale_last = MConvert <double> .ToTypeOrDefault(orderStockOuts_last.Sum(x => x.amount), 0);
                    }

                    var pans_last = name_pans.Where(x => x.date < first_day_this_month);
                    if (pans_last.Any())
                    {
                        number_pans_last = MConvert <double> .ToTypeOrDefault(pans_last.Sum(x => x.amount), 0);
                    }
                    #endregion

                    #region 本月数据
                    var stockIns_this = name_stockIns.Where(x => x.date >= first_day_this_month);
                    if (stockIns_this.Any())
                    {
                        number_Ins_this = stockIns_this.Sum(x => x.amount).Value;
                    }

                    var stockOuts_this = name_stockOuts.Where(x => x.date >= first_day_this_month);
                    if (stockOuts_this.Any())
                    {
                        number_Outs_this = MConvert <double> .ToTypeOrDefault(stockOuts_this.Sum(x => x.amount), 0);
                    }

                    var orderStockOuts_this = name_orderStockOuts.Where(x => x.date >= first_day_this_month);
                    if (orderStockOuts_this.Any())
                    {
                        number_Sale_this = MConvert <double> .ToTypeOrDefault(orderStockOuts_this.Sum(x => x.amount), 0);
                    }

                    var pans_this = name_pans.Where(x => x.date >= first_day_this_month);
                    if (pans_this.Any())
                    {
                        number_pans_this = MConvert <double> .ToTypeOrDefault(pans_this.Sum(x => x.amount), 0);
                    }
                    #endregion
                    #region 损耗金额
                    var cost = db.StockIn.OrderByDescending(x => x.date).FirstOrDefault(x => x.name == name);
                    if (cost != null)
                    {
                        unitPrice = MConvert <double> .ToTypeOrDefault(cost.cost, 0);

                        totalCost       = unitPrice * (-number_pans_this);
                        totalLossAmout += totalCost;
                    }

                    #endregion
                    //仓库  名称 上月结存 本月进货 本月出货 销售消耗 本月盘点损耗 现有库存 单价 损耗金额
                    dgv.Rows.Add(stockSel,
                                 name,
                                 number_Ins_last + number_pans_last - number_Outs_last - number_Sale_last,
                                 number_Ins_this,
                                 number_Outs_this,
                                 number_Sale_this,
                                 -number_pans_this,
                                 number_Ins + number_pans - number_Outs - number_OrderOuts,
                                 unitPrice,
                                 totalCost
                                 );
                }
            }
            dgv.Rows.Add(" ");
            dgv.Rows.Add("汇总信息", "", "", "", "", "", "", "", "", "总金额");
            dgv.Rows.Add("", "", "", "", "", "", "", "", "", totalLossAmout.ToString());
            BathClass.set_dgv_fit(dgv);
        }
예제 #24
0
        //换积分
        private void btnCredits_Click(object sender, EventArgs e)
        {
            if (dgv.CurrentCell == null)
            {
                BathClass.printErrorMsg("需要选择会员卡!");
                return;
            }
            string id     = dgv.CurrentRow.Cells[0].Value.ToString();
            var    member = dao.get_CardInfo("CI_CardNo='" + id + "'");
            var    mt     = dao.get_MemberType("id=" + member.CI_CardTypeNo);

            //var member = db.CardInfo.FirstOrDefault(x => x.CI_CardNo == id);
            //var mt = db.MemberType.FirstOrDefault(x => x.id == member.CI_CardTypeNo);
            if (!mt.credits)
            {
                BathClass.printErrorMsg("所选择的卡类型不能积分!");
                return;
            }

            double cs       = 0;
            var    cu       = MemberForm.memberSetting.money.Value;
            var    cexpense = dao.get_CardCharges("CC_CardNo='" + id + "'");
            //var cexpense = db.CardCharge.Where(y => y.CC_CardNo == id);
            var cvs = cexpense.Sum(y => y.expense);

            if (cvs.HasValue)
            {
                double cds = cvs.Value;
                if (member.CI_CreditsUsed == null)
                {
                    cs = cds / cu;
                }
                else
                {
                    cs = cds / cu - member.CI_CreditsUsed.Value;
                }
            }

            if (creditsUsing.Text == "")
            {
                BathClass.printErrorMsg("需要输入积分!");
                return;
            }
            int csu = MConvert <int> .ToTypeOrDefault(creditsUsing.Text, 0);

            if (csu > cs)
            {
                BathClass.printErrorMsg("积分不够");
                return;
            }
            //cs -= csu;

            string cmd_str = "";

            if (member.CI_CreditsUsed == null)
            {
                cmd_str += @"update [CardInfo] set CI_CreditsUsed=" + csu + " where CI_CardNo='" + id + "'";
            }
            //member.CI_CreditsUsed = csu;
            else
            {
                cmd_str += @"update [CardInfo] set CI_CreditsUsed=" + (member.CI_CreditsUsed + csu) + " where CI_CardNo='" + id + "'";
            }
            //member.CI_CreditsUsed += csu;
            //db.SubmitChanges();

            if (!dao.execute_command(cmd_str))
            {
                BathClass.printErrorMsg("会员换积分失败!");
                return;
            }
            dgv_show();
            //this.DialogResult = DialogResult.OK;
        }
예제 #25
0
        private void do_dgv_Show()
        {
            totalMoney = 0;
            var db = new BathDBDataContext(LogIn.connectionString);

            try
            {
                if (stockSel == "所有仓库")
                {
                    var sos = db.StockOut.Where(x => x.date >= dt_st && x.date <= dt_et).OrderBy(x => x.id).AsQueryable();
                    if (proName != "")
                    {
                        sos = sos.Where(x => x.name.Contains(proName));
                        if (sos == null)
                        {
                            return;
                        }
                    }
                    foreach (var so in sos)
                    {////单号0, 名称1, 类别2, 单位3, 数量4, 单价5,金额6,仓库7,日期8,审核9,,备注10
                        object[] dgvRow = new object[11];
                        dgvRow[0] = so.id;
                        dgvRow[1] = so.name;
                        dgvRow[2] = getCatgoryByName(db, so.name);
                        dgvRow[3] = so.unit;
                        dgvRow[4] = so.amount;
                        dgvRow[5] = getPriceByName(db, so.name);
                        dgvRow[6] = MConvert <double> .ToTypeOrDefault(dgvRow[4], 0) * MConvert <double> .ToTypeOrDefault(dgvRow[5], 0);

                        totalMoney += MConvert <double> .ToTypeOrDefault(dgvRow[6], 0);

                        dgvRow[7]  = getStockByName(db, so.name);
                        dgvRow[8]  = so.date;
                        dgvRow[9]  = so.checker;
                        dgvRow[10] = so.note;
                        this.Invoke(new delegate_add_row(add_row), (object)dgvRow);
                    }
                }
                else
                {
                    int selId = db.Stock.FirstOrDefault(x => x.name == stockSel).id;
                    var sos   = db.StockOut.Where(x => x.date >= dt_st && x.date <= dt_et).Where(x => x.stockId == selId).OrderBy(x => x.id).AsQueryable();
                    if (proName != "")
                    {
                        sos = sos.Where(x => x.name.Contains(proName));
                        if (sos == null)
                        {
                            return;
                        }
                    }

                    foreach (var so in sos)
                    {////单号0, 名称1, 类别2,单位3, 进价4,数量5,金额6,仓库7,日期8,审核9,,备注10
                        object[] dgvRow = new object[11];
                        dgvRow[0] = so.id;
                        dgvRow[1] = so.name;
                        dgvRow[2] = getCatgoryByName(db, so.name);
                        dgvRow[3] = so.unit;
                        dgvRow[4] = so.amount;
                        dgvRow[5] = getPriceByName(db, so.name);
                        dgvRow[6] = MConvert <double> .ToTypeOrDefault(dgvRow[4], 0) * MConvert <double> .ToTypeOrDefault(dgvRow[5], 0);

                        totalMoney += MConvert <double> .ToTypeOrDefault(dgvRow[6], 0);

                        dgvRow[7]  = getStockByName(db, so.name);
                        dgvRow[8]  = so.date;
                        dgvRow[9]  = so.checker;
                        dgvRow[10] = so.note;
                        this.Invoke(new delegate_add_row(add_row), (object)dgvRow);
                    }
                }
                string [] subTotalRow1 = { "" };
                this.Invoke(new delegate_add_row(add_row), (object)subTotalRow1);
                string[] subTotalRow2 = { "", "", "", "", "", "", "总金额" };
                this.Invoke(new delegate_add_row(add_row), (object)subTotalRow2);
                string [] subTotalRow3 = { "", "", "", "", "", "", totalMoney.ToString() };
                this.Invoke(new delegate_add_row(add_row), (object)subTotalRow3);

                //this.Invoke(new delegate_set_dgv_fit(BathClass.set_dgv_fit), dgv);
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.Message);
                //m_Thread.Abort();
            }
            //subTotal(db);
        }
예제 #26
0
        //点击台位按钮
        private void btn_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;

            btn.Enabled = false;
            btn.Enabled = true;

            //BathDBDataContext db_new = new BathDBDataContext(LogIn.connectionString);
            //m_Seat = db_new.Seat.FirstOrDefault(x => x.text == btn.Text);
            m_Seat = dao.get_seat("text", btn.Text);

            SeatStatus status = m_Seat.status;

            switch (status)
            {
            case SeatStatus.AVILABLE: //可用
            case SeatStatus.PAIED:    //已经结账
                BathClass.printErrorMsg("手牌未开牌");
                break;

            case SeatStatus.USING:       //正在使用
            case SeatStatus.DEPOSITLEFT: //押金离场
                if (!dao.get_authority(LogIn.m_User, "完整点单") &&
                    !dao.get_authority(LogIn.m_User, "可见本人点单"))
                {
                    BathClass.printErrorMsg("权限不够!");
                    break;
                }

                if (MConvert <bool> .ToTypeOrDefault(m_Seat.paying, false))
                {
                    BathClass.printErrorMsg("正在结账!");
                    break;
                }
                //if (BathClass.ToBool(m_Seat.ordering))
                //{
                //    BathClass.printErrorMsg("正在录单!");
                //    break;
                //}

                //m_Seat.ordering = true;
                //db_new.SubmitChanges();

                OrderForm orderForm = new OrderForm(m_Seat, LogIn.m_User, LogIn.connectionString, false);
                orderForm.ShowDialog();

                //m_Seat.ordering = false;
                //db_new.SubmitChanges();

                break;

            case SeatStatus.LOCKING:    //锁定
                BathClass.printErrorMsg("手牌已经锁定!");
                break;

            case SeatStatus.STOPPED:    //停用
                BathClass.printErrorMsg("台位已经停用!");
                break;

            case SeatStatus.WARNING:    //警告
                OrderCheckForm orderCheckForm = new OrderCheckForm(m_Seat, LogIn.connectionString, LogIn.options);
                orderCheckForm.ShowDialog();
                break;

            case SeatStatus.REPAIED:
                BathClass.printErrorMsg("补救台位不能录单");
                break;

            default:
                break;
            }
        }
예제 #27
0
        //查询
        private void dgv_show()
        {
            dgv.Rows.Clear();
            List <Account> accountList = findAccount();

            if (!accountList.Any())
            {
                return;
            }

            //第一部分:账单部分
            double totalMoney = 0;

            foreach (var act in accountList)
            {
                var    money    = BathClass.get_account_money(act);
                string act_text = string.Join("\n", act.text.Split('|').ToArray());

                var money_str = "";
                if (act.cash != null)
                {
                    if (act.changes == null)
                    {
                        money_str += act.cash + "现";
                    }
                    else
                    {
                        money_str += act.cash - act.changes + "现";
                    }
                }
                if (act.bankUnion != null)
                {
                    money_str = money_str == "" ? money_str + act.bankUnion + "银" : money_str + "\n" + act.bankUnion + "银";
                }
                if (act.creditCard != null)
                {
                    money_str = money_str == "" ? money_str + act.creditCard + "卡" : money_str + "\n" + act.creditCard + "卡";
                }
                if (act.coupon != null)
                {
                    money_str = money_str == "" ? money_str + act.coupon + "券" : money_str + "\n" + act.coupon + "券";
                }
                if (act.groupBuy != null)
                {
                    money_str = money_str == "" ? money_str + act.groupBuy + "团" : money_str + "\n" + act.groupBuy + "团";
                }
                if (act.zero != null)
                {
                    money_str = money_str == "" ? money_str + act.zero + "挂" : money_str + "\n" + act.zero + "挂";
                }
                if (act.server != null)
                {
                    money_str = money_str == "" ? money_str + act.server + "招" : money_str + "\n" + act.server + "招";
                }
                if (act.wipeZero != null)
                {
                    money_str = money_str == "" ? money_str + act.wipeZero + "抹" : money_str + "\n" + act.wipeZero + "抹";
                }

                dgv.Rows.Add(act.id, act_text, act.payTime.ToString("MM-dd HH:mm"), money_str);
                totalMoney += money;
            }
            dgv.Rows.Add("合计", "", "", totalMoney);

            totalMoney = 0;
            dgv.Rows.Add();

            //第二部分:订单部分
            var orders = db.HisOrders.Where(x => idList.Contains(x.accountId.Value) && x.deleteEmployee == null);
            var menus  = orders.Select(x => x.menu).Distinct();

            foreach (var menu in menus)
            {
                var menu_orders = orders.Where(x => x.menu == menu);
                var tmp_menu    = db.Menu.FirstOrDefault(x => x.name == menu);

                double t_number = menu_orders.Sum(x => x.number);
                double money    = BathClass.get_orders_money(accountList, menu_orders.ToList());
                double t_money  = 0;
                if (tmp_menu != null)
                {
                    t_money = t_number * tmp_menu.price;
                }

                dgv.Rows.Add(menu, t_number, t_money, money);
                totalMoney += money;
            }

            //第三部分:售卡部分
            double card_cash = 0, card_bank = 0;
            var    cardsale = db.CardSale.Where(x => (x.macAddress == macAdd || x.macAddress == null) && x.payTime >= lastTime && x.payTime <= thisTime);

            var cardsale_free = cardsale.Where(x => x.note == "赠送卡");

            if (cardsale_free.Any())
            {
                dgv.Rows.Add("赠送卡", cardsale_free.Count());
            }

            cardsale = cardsale.Where(x => x.note == null);
            //dgv.Rows.Add(MConvert<int>.ToTypeOrDefault(balance).ToString() + "会员卡", card_balance.Count(), "", card_balance_money);
            var balance_list = cardsale.Select(x => x.balance).Distinct();

            foreach (var balance in balance_list)
            {
                var    card_balance       = cardsale.Where(x => x.balance == balance);
                double card_balance_money = 0;
                var    card_balance_cash  = card_balance.Where(x => x.cash != null);
                if (card_balance_cash.Any())
                {
                    double cash = card_balance_cash.Sum(x => x.cash).Value;
                    card_balance_money += cash;
                    card_cash          += cash;
                }

                var card_balance_bank = card_balance.Where(x => x.bankUnion != null);
                if (card_balance_bank.Any())
                {
                    double bank = card_balance_bank.Sum(x => x.bankUnion).Value;
                    card_balance_money += bank;
                    card_bank          += bank;
                }

                totalMoney += card_balance_money;
                dgv.Rows.Add(MConvert <int> .ToTypeOrDefault(balance, 0) + "会员卡", card_balance.Count(), "", card_balance_money);
            }

            dgv.Rows.Add("合计", "", "", totalMoney);
            dgv.Rows.Add();


            //第四部分:汇总部分
            string[] cashRow     = { "现金", "", "", card_cash.ToString() };
            string[] bankRow     = { "银联", "", "", card_bank.ToString() };
            string[] cardRow     = { "储值卡", "", "", "0" };
            string[] couponRow   = { "优惠券", "", "", "0" };
            string[] groupBuyRow = { "团购优惠", "", "", "0" };
            string[] discountRow = { "挂账", "", "", "0" };
            string[] serverRow   = { "免单", "", "", "0" };
            string[] otherRow    = { "扣卡", "", "", "0" };
            string[] wipeRow     = { "抹零", "", "", "0" };

            double act_money = card_bank + card_cash;

            double tmp_Money = Convert.ToDouble(accountList.Where(x => x.cash != null).Sum(x => x.cash));

            cashRow[3] = (Convert.ToDouble(cashRow[3]) + tmp_Money).ToString();
            act_money += tmp_Money;

            tmp_Money  = Convert.ToDouble(accountList.Where(x => x.changes != null).Sum(x => x.changes));
            cashRow[3] = (Convert.ToDouble(cashRow[3]) - tmp_Money).ToString();
            act_money -= tmp_Money;

            tmp_Money  = Convert.ToDouble(accountList.Where(x => x.bankUnion != null).Sum(x => x.bankUnion));
            bankRow[3] = (Convert.ToDouble(bankRow[3]) + tmp_Money).ToString();
            act_money += tmp_Money;

            tmp_Money  = Convert.ToDouble(accountList.Where(x => x.creditCard != null).Sum(x => x.creditCard));
            cardRow[3] = tmp_Money.ToString();
            act_money += tmp_Money;

            tmp_Money    = Convert.ToDouble(accountList.Where(x => x.coupon != null).Sum(x => x.coupon));
            couponRow[3] = tmp_Money.ToString();
            act_money   += tmp_Money;

            tmp_Money      = Convert.ToDouble(accountList.Where(x => x.groupBuy != null).Sum(x => x.groupBuy));
            groupBuyRow[3] = tmp_Money.ToString();
            act_money     += tmp_Money;

            tmp_Money      = Convert.ToDouble(accountList.Where(x => x.zero != null).Sum(x => x.zero));
            discountRow[3] = tmp_Money.ToString();
            act_money     += tmp_Money;

            tmp_Money    = Convert.ToDouble(accountList.Where(x => x.server != null).Sum(x => x.server));
            serverRow[3] = tmp_Money.ToString();
            act_money   += tmp_Money;

            tmp_Money   = Convert.ToDouble(accountList.Where(x => x.deducted != null).Sum(x => x.deducted));
            otherRow[3] = tmp_Money.ToString();
            act_money  += tmp_Money;

            tmp_Money  = Convert.ToDouble(accountList.Where(x => x.wipeZero != null).Sum(x => x.wipeZero));
            wipeRow[3] = tmp_Money.ToString();
            act_money += tmp_Money;

            dgv.Rows.Add(cashRow);
            dgv.Rows.Add(bankRow);
            dgv.Rows.Add(cardRow);
            dgv.Rows.Add(couponRow);
            dgv.Rows.Add(groupBuyRow);
            dgv.Rows.Add(discountRow);
            dgv.Rows.Add(serverRow);
            dgv.Rows.Add(otherRow);
            dgv.Rows.Add(wipeRow);
            dgv.Rows.Add("合计", "", "", act_money);

            BathClass.set_dgv_fit(dgv);
        }
예제 #28
0
        //F6开牌
        private void tool_open_seat()
        {
            //BathDBDataContext db_new = new BathDBDataContext(LogIn.connectionString);
            string text = tSeat.Text;

            m_Seat = dao.get_seat("text='" + text + "' or oId='" + text + "'");
            //m_Seat = db_new.Seat.FirstOrDefault(x => x.text == text || x.oId == text);
            if (m_Seat == null)
            {
                BathClass.printErrorMsg("手牌不可用!");
                return;
            }

            switch (m_Seat.status)
            {
            case SeatStatus.AVILABLE: //可用
            case SeatStatus.PAIED:    //已经结账
                BathClass.printErrorMsg("手牌未开牌");
                break;

            case SeatStatus.USING:       //正在使用
            case SeatStatus.DEPOSITLEFT: //押金离场
                if (!dao.get_authority(LogIn.m_User, "完整点单") &&
                    !dao.get_authority(LogIn.m_User, "可见本人点单"))
                {
                    BathClass.printErrorMsg("权限不够!");
                    break;
                }
                if (MConvert <bool> .ToTypeOrDefault(m_Seat.paying, false))
                {
                    BathClass.printErrorMsg("正在结账!");
                    break;
                }
                //if (BathClass.ToBool(m_Seat.ordering))
                //{
                //    BathClass.printErrorMsg("正在录单!");
                //    break;
                //}

                //m_Seat.ordering = true;
                //db_new.SubmitChanges();

                OrderForm orderForm = new OrderForm(m_Seat, LogIn.m_User, LogIn.connectionString, false);
                orderForm.ShowDialog();

                //m_Seat.ordering = false;
                //db_new.SubmitChanges();
                break;

            case SeatStatus.LOCKING:    //锁定
                BathClass.printErrorMsg("手牌已经锁定!");
                break;

            case SeatStatus.STOPPED:    //停用
                BathClass.printErrorMsg("手牌已经停用!");
                break;

            case SeatStatus.WARNING:    //警告
                OrderCheckForm orderCheckForm = new OrderCheckForm(m_Seat, LogIn.connectionString, LogIn.options);
                orderCheckForm.ShowDialog();
                break;

            case SeatStatus.REPAIED:
                BathClass.printErrorMsg("补救台位不能录单");
                break;

            default:
                break;
            }

            tSeat.Text = "";
        }
예제 #29
0
        //发送单条短信
        private void BtnSendOneMsg_Click(object sender, EventArgs e)
        {
            stop_flag = true;
            if (dgv.CurrentCell == null)
            {
                return;
            }

            String TypeStr        = "";
            String CopyRightToCOM = "";
            String CopyRightStr   = "//上海迅赛信息技术有限公司,网址www.xunsai.com//";

            smsPort = IOUtil.get_config_by_key(ConfigKeys.KEY_SMSPORT);
            smsBaud = IOUtil.get_config_by_key(ConfigKeys.KEY_SMSBAUD);
            if (smsPort == "" || smsBaud == "")
            {
                SMmsForm smsForm = new SMmsForm();
                if (smsForm.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                smsPort = IOUtil.get_config_by_key(ConfigKeys.KEY_SMSPORT);
                smsBaud = IOUtil.get_config_by_key(ConfigKeys.KEY_SMSBAUD);
            }

            if (smsPort == "" || smsBaud == "" || msg.Text == "")
            {
                return;
            }

            if (SmsClass.Sms_Connection(CopyRightStr, uint.Parse(smsPort[3].ToString()), uint.Parse(smsBaud), out TypeStr, out CopyRightToCOM) != 1)
            {
                this.Invoke(new delegate_no_para(close_smsMsgForm));
                BathClass.printErrorMsg("短信猫连接失败,请重试!");
                return;
            }

            DataGridViewRow r = dgv.CurrentRow;

            change_row_color(r, Color.Cyan);
            string phone = MConvert <string> .ToTypeOrDefault(r.Cells[2].Value, "");

            if (phone.Length != 11)
            {
                BathClass.printErrorMsg("电话号码格式不正确,需要11位电话号码");
                change_row_color(r, Color.OrangeRed);
            }

            if (SmsClass.Sms_Send(phone, msg.Text) == 0)
            {
                BathClass.printErrorMsg("发送失败!");
                change_row_color(r, Color.OrangeRed);
            }
            else
            {
                BathClass.printInformation("发送成功!");
                change_row_color(r, Color.LightGreen);
            }

            SmsClass.Sms_Disconnection();
        }
예제 #30
0
        private void do_dgv_Show()
        {
            try
            {
                DateTime dt_et                   = DateTime.Parse(et.Value.ToString("yyyy-MM-dd") + " 23:59:59");
                DateTime dt_st_thisMonth         = DateTime.Parse(dt_et.ToString("yyyy-MM-") + "01 00:00:00");
                DateTime dt_et_lastMonth         = DateTime.Parse(dt_et.AddDays(-dt_et.Day).ToString("yyyy-MM-dd ") + "23:59:59");
                DateTime dt_st_lastMonth         = DateTime.Parse("2013-01-01 00:00:01");
                double   totalMoneyLastMonth     = 0;
                double   totalMoneyOutThisMonth  = 0;
                double   totalMoneyLeftThisMonth = 0;

                var db    = new BathDBDataContext(LogIn.connectionString);
                var goods = db.StorageList.AsQueryable();
                if (goodsCatSel != "所有类别")
                {
                    int selId = db.GoodsCat.FirstOrDefault(x => x.name == goodsCatSel).id;
                    goods = goods.Where(x => x.goodsCatId == selId);
                }
                if (goods_name_sel != "")
                {
                    goods = goods.Where(x => x.name.Contains(goods_name_sel));
                }
                var mainStock  = db.Stock.FirstOrDefault(x => x.main != null && x.main.Value);
                var goodsNames = goods.Select(x => x.name);
                if (goodsNames == null)
                {
                    return;
                }
                foreach (var name in goodsNames)
                {
                    object[] dgvRow = new object[14];

                    var storageList = db.StorageList.FirstOrDefault(x => x.name == name);
                    var goods_cat   = db.GoodsCat.FirstOrDefault(x => x.id == storageList.goodsCatId);
                    if (goods_cat == null)
                    {
                        continue;
                    }

                    var    unit_stock = db.StockIn.FirstOrDefault(x => x.name == name);
                    string unit_name  = "";
                    if (unit_stock != null)
                    {
                        unit_name = unit_stock.unit;
                    }

                    dgvRow[0]            = name;
                    dgvRow[1]            = goods_cat.name;
                    dgvRow[2]            = unit_name;
                    dgvRow[4]            = getStockByName(name, dt_st_lastMonth, dt_et, db).unitPrice;
                    dgvRow[3]            = getStockByName(name, dt_st_lastMonth, dt_et_lastMonth, db).stockleft;
                    dgvRow[5]            = getStockByName(name, dt_st_lastMonth, dt_et_lastMonth, db).totalMoney;
                    totalMoneyLastMonth += MConvert <double> .ToTypeOrDefault(dgvRow[5], 0);

                    dgvRow[6] = MConvert <double> .ToTypeOrDefault(db.StockOut.Where(x => x.name == name).Where(x => x.date >= dt_st_thisMonth && x.date < dt_et).Sum(x => x.amount), 0);

                    dgvRow[7] = getStockByName(name, dt_st_lastMonth, dt_et, db).unitPrice;
                    dgvRow[8] = MConvert <double> .ToTypeOrDefault(dgvRow[6], 0) * MConvert <double> .ToTypeOrDefault(dgvRow[7], 0);

                    totalMoneyOutThisMonth += MConvert <double> .ToTypeOrDefault(dgvRow[8], 0);

                    dgvRow[9]  = getStockByName(name, dt_st_lastMonth, dt_et, db).stockleft;
                    dgvRow[10] = getStockByName(name, dt_st_lastMonth, dt_et, db).unitPrice;
                    dgvRow[11] = getStockByName(name, dt_st_lastMonth, dt_et, db).totalMoney;
                    totalMoneyLeftThisMonth += (double)dgvRow[11];
                    dgvRow[12] = storageList.minAmount;
                    dgvRow[13] = storageList.note;

                    this.Invoke(new delegate_add_row(add_row), (object)dgvRow);
                }

                string[] sbutotalrow1 = { "" };
                this.Invoke(new delegate_add_row(add_row), (object)sbutotalrow1);
                string[] sbutotalrow2 = { "汇总信息", "", "", "", "", "总金额", "", "", "总金额", "", "", "总金额" };
                this.Invoke(new delegate_add_row(add_row), (object)sbutotalrow2);
                string[] sbutotalrow3 = { "", "", "", "", "", totalMoneyLastMonth.ToString(), "", "", totalMoneyOutThisMonth.ToString(), "", "", totalMoneyLeftThisMonth.ToString() };
                this.Invoke(new delegate_add_row(add_row), (object)sbutotalrow3);
            }
            catch (Exception ex)
            {
                BathClass.printErrorMsg(ex.Message);
            }
        }