Esempio n. 1
0
        private void button1_Click(object sender, System.EventArgs e)
        {
            DataTable tbsl = (DataTable)this.myDataGrid1.DataSource;

            if (tbsl.Rows.Count > 0)
            {
                MessageBox.Show("当有数量误差时不能作账务调整,必须先解决数量误差,请和管理员联系!"); return;
            }
            DataTable tbje = (DataTable)this.myDataGrid2.DataSource;

            if (tbje.Rows.Count == 0)
            {
                MessageBox.Show("没有需要作调整的数据"); return;
            }

            if (MessageBox.Show("您确定要将金额误差数据作账务处理行吗 ?", "询问窗", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.No)
            {
                return;
            }

            decimal sumlsje = 0;
            decimal sumpfje = 0;

            for (int i = 0; i <= tbje.Rows.Count - 1; i++)
            {
                sumlsje = sumlsje + Convert.ToDecimal(tbje.Rows[i]["零售金额差值"]);
                sumpfje = sumpfje + Convert.ToDecimal(tbje.Rows[i]["批发金额差值"]);
            }

            if (sumlsje >= 100 || sumpfje >= 100)
            {
                MessageBox.Show("调整金额太大了,系统数据可能存在问题!请和管理员联系");
                return;
            }


            long   djh      = 0;                                //单据号
            long   djid     = 0;                                //主表ID
            int    err_code = 0;                                //错误号
            string err_text = "";                               //借误文本
            string sDate    = XcDate.ServerDateTime.ToString(); //登记时间

            this.button1.Enabled = false;

            OleDbTransaction myTrans;

            myTrans = DB.sConnect.BeginTransaction();

            try
            {
                System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand();
                cmd.Connection  = DB.sConnect;
                cmd.Transaction = myTrans;


                //产生单据号
                djh = BaseFun.SeekNewDjh(_ywlx.Trim(), _deptID, cmd);

                //保存单据表头
                YK_DJ_DJMX.SaveDJ(0,
                                  djh,
                                  _deptID,
                                  _ywlx.Trim(),
                                  0,
                                  Convert.ToInt32(_deptID),
                                  0,
                                  Convert.ToDateTime(sDate).ToShortDateString(),
                                  _employeeID,
                                  Convert.ToDateTime(sDate).ToShortDateString(),
                                  Convert.ToDateTime(sDate).ToLongTimeString(),
                                  "",
                                  "",
                                  "",
                                  "",
                                  0,
                                  0,
                                  0,
                                  sumpfje,
                                  sumlsje,
                                  out djid, out err_code, out err_text, cmd);
                if (err_code != 0)
                {
                    throw new System.Exception(err_text);
                }

                //保存单据明细
                DataTable tb = (DataTable)this.myDataGrid2.DataSource;

                if (tb.Rows.Count == 0)
                {
                    MessageBox.Show("没有可保存的记录"); return;
                }
                ;
                cmd.Parameters.Clear();

                for (int i = 0; i <= tb.Rows.Count - 1; i++)
                {
                    YK_DJ_DJMX.SaveDJMX(0,
                                        djid,
                                        Convert.ToInt32(tb.Rows[i]["cjid"]),
                                        0,
                                        "",
                                        "",
                                        0,
                                        0,
                                        0,
                                        Convert.ToString(tb.Rows[i]["单位"]),
                                        BaseFun.SeekYpdw(Convert.ToString(tb.Rows[i]["单位"])),
                                        Convert.ToInt32(tb.Rows[i]["dwbl"]),
                                        0,
                                        0,
                                        0,
                                        0,
                                        Convert.ToDecimal(tb.Rows[i]["批发金额差值"]) * (-1),
                                        Convert.ToDecimal(tb.Rows[i]["零售金额差值"]) * (-1),
                                        djh,
                                        _deptID,
                                        _ywlx.Trim(),
                                        "",
                                        "",
                                        out err_code, out err_text, cmd);
                    cmd.Parameters.Clear();
                    if (err_code != 0)
                    {
                        throw new System.Exception(err_text);
                    }
                }


                //审核单据
                YK_DJ_DJMX.Shdj(djh,
                                _deptID,
                                _employeeID,
                                sDate,
                                _ywlx.Trim(),
                                cmd);


                //提交事务
                myTrans.Commit();
                DB.Colse();

                MessageBox.Show(err_text);
            }
            catch (System.Exception err)
            {
                myTrans.Rollback();
                DB.Colse();
                this.button1.Enabled = true;
                MessageBox.Show(err.Message + err.Source);
            }
        }