当可以两种不同的方式订购包含不同价格和订单价值的产品时,如何更新产品的数量?

时间:2018-09-09 07:15:16

标签: c# asp.net sql-server linq datatables

在一个站点项目上工作,用户可以用两种不同的方式订购一种产品。

让我给你和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.

注意**如果我将其视为相同的产品,那么从现在起我就在逻辑上考虑了这一点,而不是在购物车中添加新的行,我应该增加数量。 如果我这样做,我将失去附加信息,价格会发生变化,而且效果不佳。

我确实知道有一种更好的方法可以执行此操作。在此先感谢您的解决方案。非常感谢您的帮助。

0 个答案:

没有答案