Exemplo n.º 1
0
        private void btn生成工资表_Click(object sender, EventArgs e)
        {
            SalaryAuditingResult checkInfo = SalaryAuditingResult.GetSalaryAuditingResult((string)ccb薪资组.EditValue, (string)cbb日历组.EditValue);

            if (checkInfo != null && checkInfo.表工资已审核)
            {
                CreateWaitDialog("正在生成工资表...", "请稍等");

                //清空已有的工资表
                PrivateSalary.ClearPrivateSalary(checkInfo.日历组, checkInfo.薪资组);

                PayCounter payCounter = new PayCounter(checkInfo);
                //如果计算成功
                bool successed = payCounter.Calculate();

#if (DEBUG)
                //为了方便测试,在普通网使用不控制
                if (MyHelper.GetLocalIp()[0].StartsWith("192.168."))
                {
                    successed = true;
                    //保存计算时间
                    payCounter.审核情况表.工资计算时间 = DateTime.Now;
                    payCounter.审核情况表.制表人    = AccessController.CurrentUser.姓名;
                    payCounter.审核情况表.制表时间   = DateTime.Now;
                    payCounter.审核情况表.Save();
                    payCounter.审核情况表.UnLock();
                }
#endif

                if (successed)
                {
                    //保存工资表
                    foreach (SalaryCalculator cal in payCounter.员工工资计算器列表)
                    {
                        cal.Save();
                    }
                    SetWaitDialogCaption("正在加载数据...");
                    LoadData(true);
                    CloseWaitDialog();
                    MyHelper.WriteLog(LogType.信息, "生成工资表", checkInfo.ToString <SalaryAuditingResult>());
                }
                else
                {
                    CloseWaitDialog();
                    MessageBox.Show("生成工资表失败,详细原因点击确定后显示", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    //显示错误列表
                    ErrorDialog form = new ErrorDialog(payCounter.错误列表);
                    form.ShowDialog();
                }
            }
            else
            {
                MessageBox.Show("生成工资表失败:基础工资表未审核。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void btn重新计算_Click(object sender, EventArgs e)
        {
            SalaryAuditingResult checkInfo = SalaryAuditingResult.GetSalaryAuditingResult((string)cb薪资组.EditValue, (string)cbb日历组.EditValue);

            if (checkInfo != null)
            {
                if (checkInfo.已冻结 == false)
                {
                    if (MessageBox.Show("重新计算后系统自动重建抽查记录,您确定要重新计算吗?", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, 0, false) == DialogResult.Yes)
                    {
                        CreateWaitDialog("正在计算工资...", "请稍等");

                        //清空已有的工资表
                        PrivateSalary.ClearPrivateSalary(checkInfo.日历组, checkInfo.薪资组);
                        checkInfo.UndoAuditing();
                        PayCounter payCounter = new PayCounter(checkInfo);
                        //如果计算成功
                        bool successed = payCounter.Calculate();

#if (DEBUG)
                        //为了方便测试,在普通网使用不控制
                        if (MyHelper.GetLocalIp()[0].StartsWith("192.168."))
                        {
                            successed = true;
                            //保存计算时间
                            payCounter.审核情况表.工资计算时间 = DateTime.Now;
                            payCounter.审核情况表.制表人    = AccessController.CurrentUser.姓名;
                            payCounter.审核情况表.制表时间   = DateTime.Now;
                            payCounter.审核情况表.Save();
                            payCounter.审核情况表.UnLock();
                        }
#endif

                        if (successed)
                        {
                            //保存工资表
                            foreach (SalaryCalculator cal in payCounter.员工工资计算器列表)
                            {
                                cal.Save();
                            }
                            SetWaitDialogCaption("正在加载数据...");
                            LoadData(true);
                            CloseWaitDialog();

                            //显示错误列表
                            if (payCounter.错误列表.Count > 0)
                            {
                                ErrorDialog form = new ErrorDialog(payCounter.错误列表);
                                form.ShowDialog();
                            }
                            MyHelper.WriteLog(LogType.信息, "重新计算工资", checkInfo.ToString <SalaryAuditingResult>());
                        }
                        else
                        {
                            CloseWaitDialog();
                            MessageBox.Show("重新计算失败,详细原因点击确定后显示", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            //显示错误列表
                            ErrorDialog form = new ErrorDialog(payCounter.错误列表);
                            form.ShowDialog();
                        }
                    }
                }
                else
                {
                    MessageBox.Show("重新计算失败:已冻结的工资表不能反审重新计算。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show("重新计算失败:数据错误,请重新生成工资表后再试。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }