コード例 #1
0
ファイル: MaterialOut.aspx.cs プロジェクト: yangdan8/ydERPTY
 //导出数据到Excel
 protected void lBtnToExcel_Click(object sender, EventArgs e)
 {
     //获取数据并填充到数据表
     using (var da = new v_material_outTableAdapter())
     {
         //检测session中保存的查询条件
         object obj = Session["material_out_where_content"];
         string str = string.Empty;
         if (obj != null && obj.ToString().Length > 0)
         {
             str = obj.ToString();
         }
         //获取前1万行数据
         var tab = da.GetPagedData(0, 10000, str, "order by [bill_num] desc,[row_id]");
         //不显示单价就把单价清空
         if (!isShowPrice)
         {
             //遍历数据表
             foreach (DataSetMaterialOut.v_material_outRow row in tab.Rows)
             {
                 //修改值为空
                 row.SetpriceNull();
             }
         }
         //设置列标题
         string[] titleCol =
             ("单据日期,单据编号,行号,部门序号,部门名称,供应商代码,供应商名称,物料代码,物料名称," +
             "规格,数量,单位,单价(元),备注,单据备注,录入员,录入时间,修改时间").Split(',');
         //设置表名称
         string titleTab = "原料出仓单清单";
         //临时文件名称
         string fileName = titleTab + DateTime.Now.ToString("yyMMddHHmmss") + ".xls";
         //执行导出数据到excel
         bool isSuccess = ydPublicMethod.DataTable2Excel(tab, titleCol, ref fileName, titleTab);
         //如果成功则跳转到指定页面
         if (isSuccess)
         {
             Response.Redirect(fileName);
             //停止加载后续内容
             Response.End();
         }
     }
 }
コード例 #2
0
 /// <summary>
 /// 执行删除数据并处理相关数据一致性
 /// </summary>
 /// <param name="e">传入的带有数据的事件参数</param>
 /// <returns></returns>
 private bool DeleteData(FormViewDeleteEventArgs e)
 {
     //当前单号
     string billNum = Convert.ToString(e.Keys[0]);
     //数据适配器
     //当前数据库连接
     //当前更新语句对象
     using (var da = new v_material_outTableAdapter())
     using (var conn = da.Connection)
     {
         //打开数据库连接
         conn.Open();
         //开启事务
         using (var tran = conn.BeginTransaction())
         {
             //试运行
             try
             {
                 //设置事务
                 da.Transaction = tran;
                 //获取数据
                 var tab = da.GetDataByBillNum(billNum);
                 //检查是否获取到行
                 if (tab.Rows.Count == 0)
                 {
                     //显示失败
                     throw new Exception("当前记录已经被其他用户删除!");
                 }
                 //数据适配器
                 using (var daHead = new t_material_out_headTableAdapter())
                 using (var daContent = new t_material_out_contentTableAdapter())
                 using (var daBalance = new t_material_balanceTableAdapter())
                 {
                     //设置数据库连接
                     daHead.Connection = daContent.Connection = daBalance.Connection = conn;
                     //设置事务
                     daHead.Transaction = daContent.Transaction = daBalance.Transaction = tran;
                     //遍历行执行添加到结存记录
                     foreach (DataSetMaterialOut.v_material_outRow row in tab.Rows)
                     {
                         //执行添加结存
                         if (!ydOperateMaterial.AddMaterialBalance(
                              tran,
                              BillType.Out,
                              row.bill_num,
                              row.row_id
                          ))
                         {
                             return false;
                         };
                     }
                     //从单据内容中删除
                     if (daContent.DeleteByBillNum(billNum) <= 0)
                     {
                         throw new Exception("删除单据内容记录失败!");
                     }
                     //从单据表头中删除
                     if (daHead.Delete(billNum) <= 0)
                     {
                         throw new Exception("删除单据表头记录失败!");
                     }
                 }
                 //提交事务
                 tran.Commit();
                 //返回成功
                 return true;
             }
             catch (Exception ex)
             {
                 //回滚事务
                 tran.Rollback();
                 //非数字返回失败
                 throw new Exception(ex.Message);
             }
         }
     }
 }
コード例 #3
0
        /// <summary>
        /// 根据输入的参数值来执行更新数据
        /// </summary>
        /// <param name="e">传入的带有数据的事件参数</param>
        /// <returns></returns>
        private bool UpdateData(FormViewUpdateEventArgs e)
        {
            //数据适配器
            //当前添加语句对象
            //当前数据库连接
            using (var da = new v_material_outTableAdapter())
            using (var conn = da.Connection)
            {
                //打开数据库连接
                conn.Open();
                //开启事务
                using (var tran = conn.BeginTransaction())
                {
                    //设置事务
                    da.Transaction = tran;
                    //试运行
                    try
                    {
                        //当前行单号
                        string billNum = Convert.ToString(e.Keys[0]);
                        //获取数据
                        using (var tab = da.GetDataByBillNum(billNum))
                        {
                            //检查是否获取到行
                            if (tab.Rows.Count == 0)
                            {
                                //显示失败
                                throw new Exception("当前记录已经被其他用户删除!");
                            }
                            //数据适配器
                            using (var daHead = new t_material_out_headTableAdapter())
                            using (var daContent = new t_material_out_contentTableAdapter())
                            using (var daBalance = new t_material_balanceTableAdapter())
                            {
                                //设置数据库连接
                                daHead.Connection = daContent.Connection = daBalance.Connection = conn;
                                //设置事务
                                daHead.Transaction = daContent.Transaction = daBalance.Transaction = tran;
                                //遍历行执行添加到结存记录
                                foreach (DataSetMaterialOut.v_material_outRow row in tab.Rows)
                                {
                                    //执行添加结存
                                    if (!ydOperateMaterial.AddMaterialBalance(
                                        tran,
                                        BillType.Out,
                                        row.bill_num,
                                        row.row_id
                                    ))
                                    {
                                        return false;
                                    }
                                }
                                //从单据内容中删除
                                if (daContent.DeleteByBillNum(billNum) <= 0)
                                {
                                    throw new Exception("从单据内容中删除失败!");
                                }
                                //从单据表头中删除
                                if (daHead.Delete(billNum) <= 0)
                                {
                                    throw new Exception("从单据表头中删除失败!");
                                }

                                //日期
                                DateTime billDate = Convert.ToDateTime(e.NewValues["bill_date"]);
                                //部门序号
                                byte procId = Convert.ToByte(e.NewValues["proc_id"]);
                                //部门名称
                                string procName = Convert.ToString(e.NewValues["proc_name"]);
                                //单据备注
                                string billRemark = Convert.ToString(e.NewValues["remark"]);
                                //录入员
                                string addPerson = e.NewValues["add_person"].ToString();
                                //录入时间
                                DateTime addTime = Convert.ToDateTime(e.NewValues["add_time"]);
                                //最后修改时间
                                DateTime lastChangeTime = Convert.ToDateTime(e.NewValues["last_change_time"]);
                                //含有数据的行数
                                int iCountContent = 0;
                                //遍历子表执行保存
                                for (int iRow = 0; iRow < 10; iRow++)
                                {
                                    //子表各控件
                                    var tr = tabDataListSon.Rows[iRow + 1];
                                    var litRowId = (Literal)tr.Cells[0].Controls[0];
                                    var txtSupplierCode = (TextBox)tr.Cells[1].Controls[0];
                                    var txtSupplierName = (TextBox)tr.Cells[2].Controls[0];
                                    var txtMaterialCode = (TextBox)tr.Cells[3].Controls[0];
                                    var txtMaterialName = (TextBox)tr.Cells[4].Controls[0];
                                    var txtMaterialSize = (TextBox)tr.Cells[5].Controls[0];
                                    var txtQty = (TextBox)tr.Cells[6].Controls[0];
                                    var txtMaterialUnit = (TextBox)tr.Cells[7].Controls[0];
                                    var hfPrice = (HiddenField)tr.Cells[8].Controls[0];
                                    var txtRemark = (TextBox)tr.Cells[9].Controls[0];
                                    //取得数据
                                    byte rowId = Convert.ToByte(litRowId.Text);
                                    string supplierCode = txtSupplierCode.Text;
                                    string supplierName = txtSupplierName.Text;
                                    string materialCode = txtMaterialCode.Text;
                                    string materialName = txtMaterialName.Text;
                                    string materialSize = txtMaterialSize.Text;
                                    decimal qty = txtQty.Text.Trim().Length <= 0 ? 0m : decimal.Parse(txtQty.Text.Trim());
                                    string materialUnit = txtMaterialUnit.Text;
                                    decimal price = hfPrice.Value.Trim().Length <= 0 ? 0m : decimal.Parse(hfPrice.Value.Trim());
                                    string remark = txtRemark.Text;
                                    //存在数据才保存
                                    if (materialCode.Length > 0 && materialName.Length > 0 && materialUnit.Length > 0 && qty > 0)
                                    {
                                        //从原料结存清单扣数
                                        if (!ydOperateMaterial.DecreaseMaterialBalance(
                                            daBalance,
                                            BillType.Out,
                                            supplierName,
                                            materialName,
                                            price,
                                            qty
                                        ))
                                        {
                                            return false;
                                        }
                                        //保存到单据内容清单
                                        if (daContent.Insert(
                                            billNum,
                                            rowId,
                                            supplierCode,
                                            supplierName,
                                            materialCode,
                                            materialName,
                                            materialSize,
                                            qty,
                                            materialUnit,
                                            price,
                                            remark
                                        ) <= 0)
                                        {
                                            throw new Exception("保存到单据内容清单失败!");
                                        }
                                        //含有数据的行数计数
                                        iCountContent++;
                                    }
                                }

                                //保存表头
                                if (iCountContent > 0)
                                {
                                    if (daHead.Insert(
                                        billDate,
                                        billNum,
                                        procId,
                                        procName,
                                        billRemark,
                                        addPerson,
                                        addTime,
                                        lastChangeTime
                                    ) <= 0)
                                    {
                                        throw new Exception("保存到单据表头清单失败!");
                                    }
                                }
                            }
                        }
                        //提交事务
                        tran.Commit();
                        //返回成功
                        return true;
                    }
                    catch (Exception ex)
                    {
                        //回滚事务
                        tran.Rollback();
                        //非数字返回失败
                        throw new Exception(ex.Message);
                    }
                }
            }
        }
コード例 #4
0
 /// <summary>
 /// 检查输入的数量是否超过要求
 /// 计算方法为上月结存+本月领用
 /// </summary>
 /// <param name="eAdd"></param>
 /// <param name="eUpdate"></param>
 /// <returns></returns>
 private bool CheckQty(FormViewInsertEventArgs eAdd, FormViewUpdateEventArgs eUpdate)
 {
     //当前验证控件
     var cvQty = (CustomValidator)fvProcMaterialBalanceAdd.FindControl("cvQty");
     //用户输入的内容
     int yearMonthNew;
     string procNameNew;
     string supplierNameNew, materialTypeNew, materialNameNew, materialSizeNew, unitNew;
     decimal decQtyNew, decPriceNew;
     //新增时
     if (eAdd != null)
     {
         yearMonthNew = Convert.ToInt32(eAdd.Values["year_month"]);
         procNameNew = eAdd.Values["proc_name"] as string;
         materialTypeNew = eAdd.Values["material_type"] as string;
         supplierNameNew = eAdd.Values["supplier_name"] as string;
         materialNameNew = eAdd.Values["material_name"] as string;
         materialSizeNew = eAdd.Values["material_size"] as string;
         unitNew = eAdd.Values["unit"] as string;
         decQtyNew = Convert.ToDecimal(eAdd.Values["qty"]);
         decPriceNew = Convert.ToDecimal(eAdd.Values["price"]);
     }
     //修改时
     else
     {
         yearMonthNew = Convert.ToInt32(eUpdate.NewValues["year_month"]);
         procNameNew = eUpdate.NewValues["proc_name"] as string;
         materialTypeNew = eUpdate.NewValues["material_type"] as string;
         supplierNameNew = eUpdate.NewValues["supplier_name"] as string;
         materialNameNew = eUpdate.NewValues["material_name"] as string;
         materialSizeNew = eUpdate.NewValues["material_size"] as string;
         unitNew = eUpdate.NewValues["unit"] as string;
         decQtyNew = Convert.ToDecimal(eUpdate.NewValues["qty"]);
         decPriceNew = Convert.ToDecimal(eUpdate.NewValues["price"]);
     }
     //检测值
     var dic = new Dictionary<string, string>()
     {
        {  "缺少年月", yearMonthNew.ToString () },
        {  "缺少部门名称", procNameNew },
        {  "缺少物料类型", materialTypeNew },
        {  "缺少供应商名称", supplierNameNew },
        {  "缺少物料名称", materialNameNew },
        {  "缺少数量", decQtyNew.ToString() },
        {  "缺少物料单位", unitNew },
        {  "缺少单价", decPriceNew.ToString () }
     };
     //检测文本框输入的值
     foreach (var item in dic)
     {
         if (string.IsNullOrWhiteSpace(item.Value))
         {
             cvQty.ToolTip = item.Key;
             cvQty.IsValid = false;
             return false;
         }
     };
     //检测月份
     if (yearMonthNew < 201001 || yearMonthNew > 209912)
     {
         cvQty.ToolTip = "日期输入错误";
         cvQty.IsValid = false;
         return false;
     }
     //数据适配器
     using (var daBal = new t_proc_material_balanceTableAdapter())
     using (var daOut = new v_material_outTableAdapter())
     {
         //取得年,月
         int iYear = yearMonthNew / 100;
         int iMonth = yearMonthNew % 100;
         //取得本月第一天
         var startDate = new DateTime(iYear, iMonth, 1);
         //本月最后一天
         var endDate = startDate.AddMonths(1).AddDays(-1);
         //取得上月
         var yearMonthPrev = Convert.ToInt32(startDate.AddDays(-1).ToString("yyyyMM"));
         //检测上月结存数量
         var qtyBalPrev = (decimal)daBal.SumProcQty(
             yearMonthPrev,
             procNameNew,
             materialTypeNew,
             supplierNameNew,
             materialNameNew,
             materialSizeNew,
             unitNew,
             decPriceNew
         );
         //检测本月领用数量
         var qtyOut = (decimal)daOut.SumProcQty(
             startDate,
             endDate,
             procNameNew,
             materialTypeNew,
             supplierNameNew,
             materialNameNew,
             materialSizeNew,
             unitNew,
             decPriceNew
         );
         //检测本月已经录入的结存数量
         var qtyBal = (decimal)daBal.SumProcQty(
             yearMonthNew,
             procNameNew,
             materialTypeNew,
             supplierNameNew,
             materialNameNew,
             materialSizeNew,
             unitNew,
             decPriceNew
         );
         //总数量
         var qty = qtyBalPrev + qtyOut - qtyBal;
         //检测数量
         if (decQtyNew <= qty)
         {
             cvQty.IsValid = true;
             //返回成功
             return true;
         }
         //新增时
         if (eAdd != null)
         {
             //设置错误
             cvQty.ToolTip = "结存数量不能超过上月结存+本月领用之和" + qty.ToString("0.#");
             cvQty.IsValid = false;
             //返回错误
             return false;
         }
         //修改时
         //之前输入内容
         int yearMonthOld;
         string procNameOld;
         string materialTypeOld, supplierNameOld, materialNameOld, materialSizeOld, unitOld;
         decimal decQtyOld, decPriceOld;
         yearMonthOld = Convert.ToInt32(eUpdate.OldValues["year_month"]);
         procNameOld = eUpdate.OldValues["proc_name"] as string;
         materialTypeOld = eUpdate.OldValues["material_type"] as string;
         supplierNameOld = eUpdate.OldValues["supplier_name"] as string;
         materialNameOld = eUpdate.OldValues["material_name"] as string;
         materialSizeOld = eUpdate.OldValues["material_size"] as string;
         unitOld = eUpdate.OldValues["unit"] as string;
         decQtyOld = Convert.ToDecimal(eUpdate.OldValues["qty"]);
         decPriceOld = Convert.ToDecimal(eUpdate.OldValues["price"]);
         //如果参数有修改直接返回错误
         if (yearMonthOld != yearMonthNew ||
             procNameOld != procNameNew ||
             materialTypeOld != materialTypeNew ||
             supplierNameOld != supplierNameNew ||
             materialNameOld != materialNameNew ||
             materialSizeOld != materialSizeNew ||
             unitOld != unitNew ||
             decPriceOld != decPriceNew
         )
         {
             //设置错误
             cvQty.ToolTip = "结存数量不能超过上月结存+本月领用之和" + qty;
             cvQty.IsValid = false;
             //返回错误
             return false;
         }
         //用户只是修改了数量,总数量就累加之前的数量
         qty += decQtyOld;
         //检测数量
         if (decQtyNew <= qty)
         {
             cvQty.IsValid = true;
             //返回成功
             return true;
         }
         //设置错误
         cvQty.ToolTip = "结存数量不能超过上月结存+本月领用之和" + qty;
         cvQty.IsValid = false;
         //返回错误
         return false;
     }
 }
コード例 #5
0
ファイル: MaterialOut.aspx.cs プロジェクト: yangdan8/ydERPTY
 /// <summary>
 /// 执行删除数据并处理相关数据一致性
 /// </summary>
 /// <param name="e">传入的带有数据的事件参数</param>
 /// <returns></returns>
 private bool DeleteData(ListViewDeleteEventArgs e)
 {
     //实例化数据适配器
     using (var da = new v_material_outTableAdapter())
     //取得数据库连接
     using (var conn = da.Connection)
     {
         //打开数据库连接
         conn.Open();
         //事务
         using (var tran = conn.BeginTransaction())
         {
             //设置事务
             da.Transaction = tran;
             try
             {
                 //当前出仓单号
                 string billNum = e.Keys[0].ToString();
                 //当前行号
                 byte rowId = Convert.ToByte(e.Keys[1]);
                 //取得该条出仓单清单记录
                 var tab = da.GetDataByBillNumAndRowId(billNum, rowId);
                 //检测是否存在数据
                 if (tab.Rows.Count <= 0)
                 {
                     throw new Exception(string.Format("当前单据:\n单号:{0}\n行号:{1}\n已经被其他用户删除!", billNum, rowId));
                 }
                 //单据内容、原料结存适配器
                 using (var daContent = new t_material_out_contentTableAdapter())
                 using (var daBalance = new t_material_balanceTableAdapter())
                 {
                     //设置连接对象
                     daContent.Connection = daBalance.Connection = tran.Connection;
                     //设置事务
                     daContent.Transaction = daBalance.Transaction = tran;
                     //遍历行执行各行写回结存记录
                     foreach (DataSetMaterialOut.v_material_outRow row in tab.Rows)
                     {
                         //执行添加到结存
                         if (!ydOperateMaterial.AddMaterialBalance(
                             tran,
                             BillType.Out,
                             row.bill_num,
                             row.row_id
                         ))
                         {
                             return false;
                         }
                     }
                     //根据出仓单号和行号删除出仓记录
                     if (daContent.Delete(billNum, rowId) <= 0)
                     {
                         throw new Exception("删除单据内容记录失败!");
                     }
                     //检测当前出仓记录内容行数
                     int? iCount = (int?)daContent.CountByBillNum(billNum);
                     if (iCount.HasValue && iCount.Value <= 0)
                     {
                         //表头适配器
                         using (var daHead = new t_material_out_headTableAdapter())
                         {
                             //删除表头
                             if (daHead.Delete(billNum) <= 0)
                             {
                                 throw new Exception("删除单据表头记录失败!");
                             }
                         }
                     }
                 }
                 //提交事务
                 tran.Commit();
                 //返回成功
                 return true;
             }
             catch (Exception ex)
             {
                 //回滚事务
                 tran.Rollback();
                 //抛出错误
                 throw new Exception("删除出仓单记录出现错误:\n" + ex.Message);
             }
         }
     }
 }
コード例 #6
0
ファイル: MaterialOut.aspx.cs プロジェクト: yangdan8/ydERPTY
 /// <summary>
 /// 根据单号从数据库中删除单据的表头和内容
 /// </summary>
 /// <param name="billNum">单据号</param>
 private bool DeleteBillByBillNum(string billNum)
 {
     //实例化数据适配器
     using (var da = new v_material_outTableAdapter())
     //取得数据库连接
     using (var conn = da.Connection)
     {
         //打开数据库连接
         conn.Open();
         //事务
         using (var tran = conn.BeginTransaction())
         {
             //设置事务
             da.Transaction = tran;
             try
             {
                 //取得之前出仓单清单记录
                 var tab = da.GetDataByBillNum(billNum);
                 //检测是否存在数据
                 if (tab.Rows.Count >= 0)
                 {
                     //单据表头行、内容行、原料结存和待出仓数据适配器
                     using (var daHead = new t_material_out_headTableAdapter())
                     using (var daContent = new t_material_out_contentTableAdapter())
                     using (var daBalance = new t_material_balanceTableAdapter())
                     {
                         //设置连接对象
                         daHead.Connection = daContent.Connection = daBalance.Connection = tran.Connection;
                         //设置事务
                         daHead.Transaction = daContent.Transaction = daBalance.Transaction = tran;
                         //遍历行执行各行写回结存记录
                         foreach (DataSetMaterialOut.v_material_outRow row in tab.Rows)
                         {
                             //执行添加到结存
                             if (!ydOperateMaterial.AddMaterialBalance(
                                 tran,
                                 BillType.Out,
                                 row.bill_num,
                                 row.row_id
                             ))
                             {
                                 return false;
                             }
                         }
                         //根据出仓单号删除全部出仓内容记录
                         if (daContent.DeleteByBillNum(billNum) <= 0)
                         {
                             throw new Exception("根据单号删除全部出仓内容记录失败!");
                         }
                         //根据出仓单号删除全部出仓表头记录
                         if (daHead.Delete(billNum) <= 0)
                         {
                             throw new Exception("根据单号删除全部出仓表头记录失败!");
                         }
                     }
                 }
                 //提交事务
                 tran.Commit();
                 //返回成功
                 return true;
             }
             catch (Exception ex)
             {
                 //回滚事务
                 tran.Rollback();
                 //抛出错误
                 throw new Exception("删除出仓单记录出现错误:\n" + ex.Message);
             }
         }
     }
 }