Skip to content
StorageDetailNew.aspx.cs 12.2 KiB
Newer Older
Jack Dan's avatar
Jack Dan committed
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Text;
using Sqcy.Page;
public partial class StorageDetailNew : MyPage
{
    protected void Page_Load(object sender, EventArgs e)
    {

        BindDDL();
        MySession.CheckSession();
        CheckPermission(PermissionHelper.PermissionCode.Confirm);

        string isHZ = Request.QueryString["isHZ"];
        hfOrderID.Value = Request.QueryString["OrderID"];
        hfSupplierID.Value = Request.QueryString["SupplierID"];
        hfDeliveryID.Value = Request.QueryString["DeliveryID"];
        hfCreateDate.Value = Request.QueryString["CreateDate"];


//        string sqlOrder = @"SELECT B.GroupName AS DeliveryName,C.NickName AS CreatorName,
//			                A.PostTime, A.CreateDate,A.OrderStatus,D.SupplierOrderStatus 
//			                FROM MyOrder.Info A INNER JOIN Permission.GroupInfo B	ON A.DeliveryID = B.GroupID
//			                INNER JOIN Permission.UserInfo C ON A.CreateBy=C.UserID
//			                INNER JOIN MyOrder.Supplier D ON A.OrderID=D.OrderID AND D.SupplierID='{0}'
//			                WHERE A.OrderID='{1}'";

//        DataTable dt1 = Sdbo.ExecuteDataTable(sqlOrder, hfSupplierID.Value, Request.QueryString["OrderID"]);

        string sqlOrder = @"SELECT B.GroupName AS DeliveryName,C.NickName AS CreatorName,
			                A.PostTime, A.CreateDate,A.OrderStatus,D.SupplierOrderStatus 
			                FROM MyOrder.Info A INNER JOIN Permission.GroupInfo B	ON A.DeliveryID = B.GroupID
			                INNER JOIN Permission.UserInfo C ON A.CreateBy=C.UserID
			                INNER JOIN MyOrder.Supplier D ON A.OrderID=D.OrderID
			                WHERE A.OrderID='{0}'";

        DataTable dt1 = Sdbo.ExecuteDataTable(sqlOrder, Request.QueryString["OrderID"]);
        
        DataRow dr = dt1.Rows[0];
        hidden1.Value = dr[0].ToString();
        hidden2.Value = " " + Convert.ToDateTime(dr[2]).ToString("yyyy-MM-dd");
        GlobalDefine.OrderStatus os = (GlobalDefine.OrderStatus)Convert.ToInt32(dr["OrderStatus"].ToString());
   
        //lblTotal.Text = dr["Total"].ToString();
        //lblCreatInfo.Text = String.Format("({0} 创建于 {1})", dr["CreatorName"], ((DateTime)dr["PostTime"]).ToString("yyyy-MM-dd HH:mm:ss"));
        lblStatus.Text = EnumDescription.GetFieldText(os);

        if (isHZ == "True") //汇总
        {

            LoadList1();
        }
        else //非汇总
        {
            LoadList2();
        }
        //如果订单状态为已入库 则隐藏入库按钮
        if (os == GlobalDefine.OrderStatus.Storage)
        {
            this.btnAdd.Attributes["disabled"] = "true";
            LoadList3();
        }
    }


    private void LoadList3()
    {
        string deliveryID = Request.QueryString["DeliveryID"];
        string createDate = Request.QueryString["CreateDate"];
        string sqlString = @"select * from Warehouse.Inventory where CreateDate={0} and DeliveryID='{1}' and Type='入库'";
        DataTable dt = Sdbo.ExecuteDataTable(sqlString, createDate, deliveryID);
       
        DataTable dtddlCangku = Sdbo.ExecuteDataTable("SELECT ItemName FROM Common.DictItem WHERE TypeID='{0}' AND IsDel=0 AND ItemID='{1}'", GlobalDefine.Cangku, dt.Rows[0][6]);
        ddlCangku.SelectedItem.Text = dtddlCangku.Rows[0][0].ToString();
        ddlCangku.Attributes["disabled"] = "true";

        DataTable dtddlJiesuanleibie = Sdbo.ExecuteDataTable("SELECT ItemName FROM Common.DictItem WHERE TypeID='{0}' AND IsDel=0 AND ItemID='{1}'", GlobalDefine.Jiesuanleibie, dt.Rows[0][7]);
        ddlJiesuanleibie.SelectedItem.Text = dtddlJiesuanleibie.Rows[0][0].ToString();
        ddlJiesuanleibie.Attributes["disabled"] = "true";

        DataTable dtddlYewubumen = Sdbo.ExecuteDataTable("SELECT ItemName FROM Common.DictItem WHERE TypeID='{0}' AND IsDel=0 AND ItemID='{1}'", GlobalDefine.Yewubumen, dt.Rows[0][8]);
        ddlYewubumen.SelectedItem.Text = dtddlYewubumen.Rows[0][0].ToString();
        ddlYewubumen.Attributes["disabled"] = "true";

        DataTable dtddlBaoguanyuan = Sdbo.ExecuteDataTable("SELECT ItemName FROM Common.DictItem WHERE TypeID='{0}' AND IsDel=0 AND ItemID='{1}'", GlobalDefine.Baoguanyuan, dt.Rows[0][9]);
        ddlBaoguanyuan.SelectedItem.Text = dtddlBaoguanyuan.Rows[0][0].ToString();
        ddlBaoguanyuan.Attributes["disabled"] = "true";

        if (dt.Rows[0][10].ToString() == "")
        {
            txtListCode.Text = "空";
            txtListCode.Attributes["disabled"] = "true";
        }
        else
        {
            txtListCode.Text = dt.Rows[0][10].ToString();
            txtListCode.Attributes["disabled"] = "true";
        }
        if (dt.Rows[0][5].ToString() == "")
        {
            txtMemo.Text = "空";
            txtMemo.Attributes["disabled"] = "true";
        }
        else
        {
            txtMemo.Text = dt.Rows[0][5].ToString();
            txtMemo.Attributes["disabled"] = "true";
        }

    }

    private void LoadList1()
    {

        StringBuilder sb = new StringBuilder();

        string[] shuzu = new string[6];

        DataTable dtOrder = Sdbo.ExecuteDataTable("select a.DeliveryID,a.OrderID,b.GroupName from MyOrder.Info a left join Permission.GroupInfo b on a.DeliveryID=b.GroupID where CreateDate={0} and ParentID='{1}'", Request.QueryString["CreateDate"], hfDeliveryID.Value);


        DataTable dtALL = new DataTable();

        for (int i = 0; i < dtOrder.Rows.Count; i++)
        {
            string sql = @"select A.GoodsID,A.Price,B.DispSeq,B.GoodsName,C.ItemName,D.GroupName
                        from  MyOrder.Detail A inner join Supplier.Goods B on A.GoodsID=B.GoodsID inner join Common.DictItem C
                        on B.MainUnit=C.ItemID inner join Permission.GroupInfo D on B.SupplierID=D.GroupID where A.OrderID='{0}' ORDER BY B.DispSeq";
            DataTable dt = Sdbo.ExecuteDataTable(sql, dtOrder.Rows[i]["OrderID"]);
            dtALL.Merge(dt);//合并DataTable
        }

        DataSetHelper dataSetHelper = new DataSetHelper();

        shuzu[0] = "GoodsID";
        shuzu[1] = "Price";
        shuzu[2] = "DispSeq";
        shuzu[3] = "GoodsName";
        shuzu[4] = "ItemName";
        shuzu[5] = "GroupName";

        DataTable newTable = dataSetHelper.Distinct("订单验收", dtALL, shuzu);

        sb.Append("<table width='100%' class='BGtable' id='tblGoods'>");

        
        for (int j = 0; j < newTable.Rows.Count; j++)
        {

            Decimal checkedAmount = Convert.ToDecimal(GetSum(newTable.Rows[j]["GoodsID"].ToString()));//验收数量

            sb.Append("<tr>");
            sb.Append(String.Format("<td>{0}</td>", newTable.Rows[j]["GoodsName"]));
            sb.Append(String.Format("<td width='200'>{0}</td>",  newTable.Rows[j]["GroupName"]));
            sb.Append(String.Format("<td width='100'>{0}</td>",GetSumOne(newTable.Rows[j]["GoodsID"].ToString())));//应验收数量
            sb.Append(String.Format("<td width='100' class='Count center' goodsID='{1}'>{0}</td>", checkedAmount, newTable.Rows[j]["GoodsID"]));
            sb.Append(String.Format("<td width='80'>{0}</td>", newTable.Rows[j]["ItemName"]));
            sb.Append(String.Format("<td width='80'>{0}</td>", GetPrice(newTable.Rows[j]["GoodsID"].ToString())));//参考单价
            sb.Append(String.Format("<td width='80'>{0}</td>",  String.Format("{0:F}",Convert.ToDecimal(newTable.Rows[j]["Price"].ToString()) * checkedAmount)));//合计
            sb.Append("</tr>");
        }

        sb.Append("</table>");

        lblData.Text = sb.ToString();
    }

    private string GetSumOne(string goodID)
    {
        DataRow sum1 = Sdbo.ExecuteDataRow("select SUM(Amount) as r1  from MyOrder.Detail where OrderID in (select OrderID from MyOrder.Info a inner join Permission.GroupInfo b on a.DeliveryID=b.GroupID where CreateDate={0} and b.ParentID='{1}') and GoodsID='{2}' group by GoodsID", Request.QueryString["CreateDate"], MySession.UserGroupID, goodID);

       
        if (sum1 != null)
        {
            return sum1["r1"].ToString();
        }
        return "0.00";

    }


    private void LoadList2()
    {
        string sql = @"select distinct (A.GoodsID),A.Price,B.DispSeq,B.GoodsName,C.ItemName,D.GroupName
                        from  MyOrder.Detail A inner join Supplier.Goods B on A.GoodsID=B.GoodsID inner join Common.DictItem C
                        on B.MainUnit=C.ItemID inner join Permission.GroupInfo D on B.SupplierID=D.GroupID where A.OrderID='{0}' ORDER BY B.DispSeq";
        DataTable dt = Sdbo.ExecuteDataTable(sql, Request.QueryString["OrderID"]);
        StringBuilder sb = new StringBuilder();

        sb.Append("<table width='100%' class='BGtable' id='tblGoods'>");

        foreach (DataRow dr in dt.Rows)
        {

            Decimal checkedAmount = Convert.ToDecimal(GetSum(dr["GoodsID"].ToString()));//验收数量

            sb.Append("<tr>");
            sb.Append(String.Format("<td>{0}</td>", dr["GoodsName"]));
            sb.Append(String.Format("<td width='200'>{0}</td>", dr["GroupName"]));
            sb.Append(String.Format("<td width='100'>{0}</td>", GetSumTwo(dr["GoodsID"].ToString())));
            sb.Append(String.Format("<td width='100' class='Count center' goodsID='{1}'>{0}</td>", checkedAmount, dr["GoodsID"]));
            sb.Append(String.Format("<td width='80'>{0}</td>", dr["ItemName"]));
            sb.Append(String.Format("<td width='80'>{0}</td>", GetPrice(dr["GoodsID"].ToString())));//参考单价
            sb.Append(String.Format("<td width='80'>{0}</td>", String.Format("{0:F}",Convert.ToDecimal(dr["Price"].ToString()) * checkedAmount)));//合计
            sb.Append("</tr>");
        }
        sb.Append("</table>");
        lblData.Text = sb.ToString();

    }

    private string GetSumTwo(string goodID)
    {

        DataRow sum1 = Sdbo.ExecuteDataRow("select SUM(Amount) as r1  from MyOrder.Detail where OrderID='{0}' and GoodsID='{1}' group by GoodsID", Request.QueryString["OrderID"], goodID);
        if (sum1 != null)
        {
            return sum1["r1"].ToString();
        }
        return "0.00";

    }




    private string GetSum(string goodID)
    {
        DataRow sum = Sdbo.ExecuteDataRow("select SUM(b.AcceptAmount) as accepttotal from MyOrder.Accept a inner join MyOrder.AcceptDetail b on a.AcceptID=b.AcceptID where OrderID='{0}' and GoodsID='{1}' group by GoodsID ", hfOrderID.Value, goodID);
        if (sum != null)
        {
            return sum["accepttotal"].ToString();
        }
        return "0.00";
    }

    /// <summary>
    /// 绑定下拉列表框
    /// </summary>
    private void BindDDL()
    {
        ddlCangku.DataTextField = "ItemName";
        ddlCangku.DataValueField = "ItemID";
        ddlCangku.DataSource = Sdbo.ExecuteDataTable("SELECT ItemName,ItemID FROM Common.DictItem WHERE TypeID='{0}' AND IsDel=0 ORDER BY ItemName", GlobalDefine.Cangku); 
        ddlCangku.DataBind();

        ddlJiesuanleibie.DataTextField = "ItemName";
        ddlJiesuanleibie.DataValueField = "ItemID";
        ddlJiesuanleibie.DataSource = Sdbo.ExecuteDataTable("SELECT ItemName,ItemID FROM Common.DictItem WHERE TypeID='{0}' AND IsDel=0 ORDER BY ItemName", GlobalDefine.Jiesuanleibie);
        ddlJiesuanleibie.DataBind();

        ddlYewubumen.DataTextField = "ItemName";
        ddlYewubumen.DataValueField = "ItemID";
        ddlYewubumen.DataSource = Sdbo.ExecuteDataTable("SELECT ItemName,ItemID FROM Common.DictItem WHERE TypeID='{0}' AND IsDel=0 ORDER BY ItemName", GlobalDefine.Yewubumen);
        ddlYewubumen.DataBind();

        ddlBaoguanyuan.DataTextField = "ItemName";
        ddlBaoguanyuan.DataValueField = "ItemID";
        ddlBaoguanyuan.DataSource = Sdbo.ExecuteDataTable("SELECT ItemName,ItemID FROM Common.DictItem WHERE TypeID='{0}' AND IsDel=0 ORDER BY ItemName", GlobalDefine.Baoguanyuan);
        ddlBaoguanyuan.DataBind();
    }


    private string GetPrice(string goodsID)
    {
        string datetime = DateTime.Now.ToString();
        string sql = @"select A.Price from Supplier.PriceSheetDetail A inner join Supplier.PriceSheet B on A.PriceSheetID=B.PriceSheetID where GoodsID='{0}' and '" + datetime + "'>B.BeginTime and '"+datetime+"'<B.EndTime";
        DataRow price = Sdbo.ExecuteDataRow(sql,goodsID);
        if (price != null)
        {
            return price["Price"].ToString();
        }
        return "0.00";
    }
}