在一个站点项目上工作,用户可以用两种不同的方式订购一种产品。
让我给你和example.let我们假设我们有一个产品X。
资源:
**table 1--> tbprd (tb-product)**
prdcod prdtit prdprc($) prdprcWaddon($) prdqty
---------------------------------------------------
101 x 5 10 1
prdcod (PK) = product code
prdtit = product title.
prdprc = product price without addon.
prdprcWaddon = product price with addon.
**table 2 --> tbaddon**
addocd addtit addprc($) addqty
----------------------------------------
99 test 1 10
addcod (PK)
addtit = addon title.
addprc = addon price. along with the prdprcWaddon,
addon has its on individual price as well.
datatable ord (it is used to store the my cart
info temporarily before payment confirmation. )
--> containing major columns as for this situation
are
ordcod ordprdcod ordprc ordprdqty
-----------------------------------
ordcod (pk)
ordprdcod(FK) to tbprd.
ordprc (total price of the order)
here the ordprc is calculated via expression
:(ordprdqty*(ordprdprc+(addqty*addprc)))
ordprdqty = product order quantity
用户可以通过两种方式订购x。->
A。用户可以简单地自己订购产品。**
B。。用户还可以使用其他插件来订购它。
因此导致同一产品的最终价格不同。
*现在,如果用户在购物车中添加x(A。),则购物车总计为$ 5。
现在无论出于何种原因,用户也想要带有附加组件(B.)的产品,因此他转到产品页面并创建带有附加组件的X,并将其添加到他/她的购物车中,因此该产品的总价值为11美元。
现在的问题是我应该如何看待第二个产品(从技术上讲,它与ADDONS结合使用)。
从逻辑上讲,我必须将其视为另一种产品,并且应该 在购物车数据表中添加新行。
现在默认的订购数量始终为1。在x的情况下,我们订购了2个x的订购数量,一个作为简单订购,一个带有附加组件。
现在我正在寻找一种查询此数据表并将订单数量与库存tbprd(prdqty)中的左侧产品数量进行比较的方法。
///其中session [“ ss”]包含数据表ord。
DataTable tb = (DataTable)(Session["ss"]);
foreach (DataRow row in tb.Rows)
{
//Comparing the qty available and order qty of a prd.
clsprd.prd obj = new
clsprd.prd();
ordbcod =Convert.ToInt32(row["ordbcod"]);
qty = obj.Get_left_qty(ordbcod);
ordqty = Convert.ToInt32(row["ordqty"]);
if (qty < ordqty)
{
string script = "<script
type=\"text/javascript\">alert
('One of your product size is more then its actual
`enter code here`quantity');</script>";
ClientScript.RegisterClientScriptBlock
(this.GetType(),"Alert", script);
}
}
如果用户仅订购一种类型的产品(简单或仅带有附件),则效果很好。 对于上述示例(X),我们在同一产品(X)的购物车中有2行,其剩余数量为1(如表所示):
this code works as following
-----------------------------
for the first row X(A.) simple ord
ordqty = 1
left qty = 1
and it then is false for this condt. (qty < ordqty)
now the loop continues and compare the second row in
the cart (X with addon)
for this too
ordqty = 1
left qty = 1
and it then again is false for this condt. (qty <
ordqty).
WHILE IT MUST HAVE GIVEN AN ERROR AS TECHNICALLY THE
X IS ORDERED FOR QTY 2 BUT WE ONLY HAVE ONE TO
SERVE.SO MY CURRENT CODE IS NOT RIGHT. IM LOOKING FOR
A CODE THAT CAN HELP RESOLVE THIS PROBLEM.
I THINK IT CAN BE DONE VIA USING LINQ BUT I DONT HAVE
ANY EXPERIENCE OF USING LINQ.
注意**如果我将其视为相同的产品,那么从现在起我就在逻辑上考虑了这一点,而不是在购物车中添加新的行,我应该增加数量。 如果我这样做,我将失去附加信息,价格会发生变化,而且效果不佳。
我确实知道有一种更好的方法可以执行此操作。在此先感谢您的解决方案。非常感谢您的帮助。