📄 outputadapterlogic.cs
字号:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Text;
using Orphean.WinFormHelper.Framework.BusinessLogic;
namespace DataModal.HidaKitDataSetTableAdapters
{
public partial class OUTPUTSTableAdapter
{
public void InitLogic()
{
Adapter.RowUpdating += new SqlRowUpdatingEventHandler(Adapter_RowUpdating);
Adapter.AcceptChangesDuringUpdate = false;
}
public void InitTransaction(SqlTransaction trans)
{
Adapter.InsertCommand.Transaction = trans;
Adapter.DeleteCommand.Transaction = trans;
Adapter.UpdateCommand.Transaction = trans;
foreach (SqlCommand cmd in CommandCollection)
cmd.Transaction = trans;
}
void Adapter_RowUpdating(object sender, SqlRowUpdatingEventArgs e)
{
if (e.StatementType == StatementType.Insert || e.StatementType == StatementType.Update)
{
SqlConnection conn = ConnectionHelper.GetConnection();
try
{
ORDERSTableAdapter adapter = HidaKitAdapterProxy.GetOrdersAdapter(conn);
HidaKitDataSet.ORDERSDataTable table = adapter.GetDataByOrderId((string)e.Row["ORDER_ID"]);
if (table.Count == 0)
throw new IDNotExistsException((string)e.Row["ORDER_ID"], string.Format(Resources.Messages.SOrderNotFound, e.Row["ORDER_ID"]));
}
finally
{
ConnectionHelper.ReleaseConnection(conn);
}
}
}
}
public partial class OUTPUT_DETAILTableAdapter
{
public void InitLogic()
{
Adapter.RowUpdating += new SqlRowUpdatingEventHandler(Adapter_RowUpdating);
Adapter.AcceptChangesDuringUpdate = false;
}
public void InitTransaction(SqlTransaction trans)
{
Adapter.InsertCommand.Transaction = trans;
Adapter.DeleteCommand.Transaction = trans;
Adapter.UpdateCommand.Transaction = trans;
foreach (SqlCommand cmd in CommandCollection)
cmd.Transaction = trans;
}
void CheckRequired(SqlRowUpdatingEventArgs e)
{
HidaKitDataSet.PRODUCTSDataTable productTable = null;
HidaKitDataSet.STOCKSDataTable stockTable = null;
SqlConnection conn = ConnectionHelper.GetConnection();
try
{
PRODUCTSTableAdapter productAdapter = HidaKitAdapterProxy.GetProductAdapter(conn);
STOCKSTableAdapter stockAdapter = HidaKitAdapterProxy.GetStockAdapter(conn);
if (e.StatementType == StatementType.Insert || e.StatementType == StatementType.Update)
{
productTable = productAdapter.GetDataByProductId((string)e.Row["PRODUCT_ID"]);
if (productTable.Count == 0)
throw new IDNotExistsException((string)e.Row["PRODUCT_ID"],
string.Format("Product {0} is not exists.", e.Row["PRODUCT_ID"]));
stockTable = stockAdapter.GetStockByProductID((string)e.Row["PRODUCT_ID"]);
if (stockTable.Count == 0)
throw new IDNotExistsException((string)e.Row["PRODUCT_ID"],
string.Format(Resources.Messages.SProductNotFound, e.Row["PRODUCT_ID"]));
}
}
finally
{
ConnectionHelper.ReleaseConnection(conn);
}
}
void CheckStock(SqlRowUpdatingEventArgs e)
{
SqlConnection conn = ConnectionHelper.GetConnection();
try
{
string product_id, order_id;
STOCK_DETAILTableAdapter stockDetailAdapterForUpdate = HidaKitAdapterProxy.GetStockDetailAdapter(Connection);
HidaKitDataSet.STOCK_DETAILDataTable stockDetailTable = null;
HidaKitDataSet.OUTPUTSRow parentRow = null;
int qty;
if (Adapter.UpdateCommand.Transaction != null)
stockDetailAdapterForUpdate.InitTransaction(Adapter.UpdateCommand.Transaction);
//check stock qty
if (e.StatementType == StatementType.Insert || e.StatementType == StatementType.Update)
{
product_id = (string)e.Row["PRODUCT_ID"];
stockDetailTable = stockDetailAdapterForUpdate.GetDataByProductID(product_id);
if (stockDetailTable.Rows.Count == 0)
throw new OutOfStockException(product_id, (string)e.Row["PRODUCT_NAME"], (int)e.Row["QTY"], 0,
string.Format(Resources.Messages.SStockOut, product_id));
DataRow row = null;
DataRow[] rows = null;
//recover qty
if (e.StatementType == StatementType.Update)
{
rows = stockDetailTable.Select(
string.Format("STOCK_ID = '{0}'", e.Row["STOCK_ID", DataRowVersion.Original]));
if (rows == null || rows.Length == 0)
throw new OutOfStockException(product_id, (string)e.Row["PRODUCT_NAME", DataRowVersion.Original], (int)e.Row["QTY", DataRowVersion.Original], 0,
string.Format(Resources.Messages.SStockOut, product_id));
row = rows[0];
qty = row["QTY", DataRowVersion.Original] == DBNull.Value ? 0 : Convert.ToInt32(row["QTY", DataRowVersion.Original]);
qty += (int)e.Row["QTY", DataRowVersion.Original];
row["QTY"] = qty;
rows = stockDetailTable.Select(
string.Format("STOCK_ID = '{0}'", e.Row["STOCK_ID"]));
if (rows == null || rows.Length == 0)
throw new OutOfStockException(product_id, (string)e.Row["PRODUCT_NAME"], (int)e.Row["QTY"], 0,
string.Format(Resources.Messages.SStockOut, product_id));
row = rows[0];
qty = row["QTY"] == DBNull.Value ? 0 : Convert.ToInt32(row["QTY"]);
qty -= (int)e.Row["QTY"];
row["QTY"] = qty;
if (qty < 0)
throw new OutOfStockException(product_id, (string)e.Row["PRODUCT_NAME"], (int)e.Row["QTY"], Convert.ToInt32(row["QTY"]),
string.Format(Resources.Messages.SStockOut, e.Row["PRODUCT_NAME"]));
stockDetailAdapterForUpdate.Update(stockDetailTable);
}
else
{
rows = stockDetailTable.Select(
string.Format("STOCK_ID = '{0}'", e.Row["STOCK_ID"]));
if (rows == null || rows.Length == 0)
throw new OutOfStockException(product_id, (string)e.Row["PRODUCT_NAME"], (int)e.Row["QTY"], 0,
string.Format(Resources.Messages.SStockOut, product_id));
row = rows[0];
qty = row["QTY"] == DBNull.Value ? 0 : Convert.ToInt32(row["QTY"]);
qty -= (int)e.Row["QTY"];
row["QTY"] = qty;
if (qty < 0)
throw new OutOfStockException(product_id, (string)e.Row["PRODUCT_NAME"], (int)e.Row["QTY"], Convert.ToInt32(row["QTY"]),
string.Format(Resources.Messages.SStockOut, e.Row["PRODUCT_NAME"]));
stockDetailAdapterForUpdate.Update(stockDetailTable);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -