コード例 #1
0
ファイル: VGI012.aspx.cs プロジェクト: ChiangHanLung/PIC_VDS
    //存檔
    protected void btnSave_Click(object sender, EventArgs e)
    {
        string ErrorMsg = "";

        try
        {
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                Label BarCode = ((Label)GridView1.Rows[i].Cells[0].Controls[1].FindControl("lblBarcode"));
                if (BarCode.Text.Length > 28)
                {
                    throw new Exception("驗收條碼需小於或等於28碼,請重新輸入");
                }
            }

            int intInv = CheckInvoice();
            if (intInv != 0)
            {
                switch (intInv)
                {
                    case 1:
                        throw new Exception("發票號碼長度不符原則,請重新輸入");
                    case 2:
                        throw new Exception("發票前二碼需為英文字母");
                    case 3:
                        throw new Exception("發票後八碼需為數字");
                }
            }

            string UserID = Session["UID"].ToString();
            string CreateDate = DateTime.Now.ToString("yyyyMMddHHmmss");

            string AcceptNo = "";
            string Statue = "";
            string ErrorItem = "";

            VGIModel.MaintainAccept dbo = new VGIModel.MaintainAccept(ConntionDB);

            //檢查是否輸入主檔資料
            DataTable dt = null;
            DataTable dtGift = null;

            if (Session["MasterOLDData_" + PageTimeStamp.Value] != null)
            {
                dt = (DataTable)Session["MasterOLDData_" + PageTimeStamp.Value];
            }
            else
            {
                ErrorMsgLabel.Text = "請輸入明細資料";
                return;
            }

            DataTable dtMain = (DataTable)Session["MainData_" + PageTimeStamp.Value];

            if (Session["GiftOLDData_" + PageTimeStamp.Value] != null)
            {
                dtGift = (DataTable)Session["GiftOLDData_" + PageTimeStamp.Value];
            }
            else
            {
                dtGift = GIftDetl();
            }


            #region 把dtGift贈品數量等欄位以0代替空白

            foreach (DataRow dr in dtGift.Rows)
            {
                if (dr["Accept_Qty"].ToString() == string.Empty)
                {
                    dr["Accept_Qty"] = 0;
                }
                if (dr["Package_Unit"].ToString() == string.Empty)
                {
                    dr["Package_Unit"] = 0;
                }
                if (dr["S_Weight"].ToString() == string.Empty)
                {
                    dr["S_Weight"] = 0;
                }
                if (dr["S_Length"].ToString() == string.Empty)
                {
                    dr["S_Length"] = 0;
                }
                if (dr["S_Width"].ToString() == string.Empty)
                {
                    dr["S_Width"] = 0;
                }
                if (dr["S_Height"].ToString() == string.Empty)
                {
                    dr["S_Height"] = 0;
                }
                if (dr["P_Weight"].ToString() == string.Empty)
                {
                    dr["P_Weight"] = 0;
                }
                if (dr["P_Length"].ToString() == string.Empty)
                {
                    dr["P_Length"] = 0;
                }
                if (dr["P_Width"].ToString() == string.Empty)
                {
                    dr["P_Width"] = 0;
                }
                if (dr["P_Height"].ToString() == string.Empty)
                {
                    dr["P_Height"] = 0;
                }
            }

            #endregion

            //檢查贈品驗收總數量需小於等於該商品驗收數量
            CheckQty(dt, dtGift);

            //檢查材積
            //CheckSize(dt, dtGift);

            //取得稅率
            string TaxRate = dbo.GetTaxRate();

            //計算稅額
            Double TaxAmount = 0;
            Double TaxAmount0 = 0;
            Double TaxAmount2 = 0;
            Double UnTaxAmount1 = 0;
            //應稅總額=sum(明細資料區所有品項的驗收數量*成本價 where 稅別=0)+sum(明細資料區所有品項的驗收數量*成本價 where 稅別=2)
            //未稅總額=sum(明細資料區所有品項的驗收數量*成本價 where 稅別=1)
            //稅額=sum(明細資料區所有品項的驗收數量*成本價 where 稅別=0)*(select taxrate from SYS_VALUEADDTAX where taxtype=0)
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (dt.Rows[i]["TaxType"].ToString() == "0")
                {
                    double SubCost0 = double.Parse(dt.Rows[i]["Cost"].ToString()) * int.Parse(dt.Rows[i]["Acc_Qty"].ToString());
                    TaxAmount0 += SubCost0;
                }
                else if (dt.Rows[i]["TaxType"].ToString() == "1")
                {
                    double SubCost1 = double.Parse(dt.Rows[i]["Cost"].ToString()) * int.Parse(dt.Rows[i]["Acc_Qty"].ToString());
                    UnTaxAmount1 += SubCost1;
                }
                else if (dt.Rows[i]["TaxType"].ToString() == "2")
                {
                    double SubCost2 = double.Parse(dt.Rows[i]["Cost"].ToString()) * int.Parse(dt.Rows[i]["Acc_Qty"].ToString());
                    TaxAmount2 += SubCost2;
                }
            }

            TaxAmount = TaxAmount0 + TaxAmount2;
            Double Tax = TaxAmount0 * double.Parse(TaxRate);

            if (PageMode == "1" || PageMode == "")//新增模式
            {
                if (CheckIsFilled(dt))
                {
                    //檢查是否品質檢驗過
                    if (IsChecked())
                    {
                        ArrayList ParameterList = new ArrayList();
                        ParameterList.Clear();
                        ParameterList.Add(UserID); //0
                        ParameterList.Add(CreateDate); //1
                        ParameterList.Add(SLP_AccDate.Text); //(2)[@驗收日期]
                        ParameterList.Add(txtAccTime.Text.Substring(0, 2) + txtAccTime.Text.Substring(3, 2)); //(3)[@驗收時間]
                        ParameterList.Add(txtPurNo.Text); //(4)[@採購單號]
                        ParameterList.Add(txtShipNo.Text); //(5)[@廠商送貨單號]
                        ParameterList.Add(txtInvoiceNo.Text); //(6)[@發票號碼]
                        ParameterList.Add(SLP_Vendor.Text); //(7)[@供應商]
                        ParameterList.Add(TaxAmount); //(8)[@應稅總額]
                        ParameterList.Add(UnTaxAmount1); //(9)[@未稅總額]
                        ParameterList.Add(Tax); //(10)[@稅額]

                        //過濾明細資料,清除不必要欄位
                        //dt.Columns.Remove("ItemCode"); //商品條碼
                        //dt.Columns.Remove("PeriodCode"); //期別條碼
                        //dt.Columns.Remove("ItemName"); //商品名稱
                        //dt.Columns.Remove("TAcc_Qty"); //總驗收數
                        //dt.Columns.Remove("TaxType"); //稅別

                        //過濾贈品明細,清除不必要的資料
                        //dtGift.Columns.Remove("GiftName");
                        //dtGift.Columns.Remove("accept_accqty");
                        //dtGift.Columns.Remove("SQty");

                        dbo.CreateAccept(ParameterList, dt, dtGift, null, out AcceptNo, out Statue, out ErrorItem);

                        this.txtAccNo.Text = AcceptNo;

                        if (Session[SessionIDAccNo] != null)
                        {
                            ((ArrayList)Session[SessionIDAccNo]).Add(AcceptNo);
                        }
                        else
                        {
                            ArrayList al = new ArrayList();
                            al.Add(AcceptNo);
                            Session[SessionIDAccNo] = al;
                        }

                        Response.Redirect("VGI012.aspx?Code=VGI01&PageMode=0&AcceptNo=" + AcceptNo + "&TimeStamp=" + PageTimeStamp.Value);
                    }
                }
            }
            else if (PageMode == "2")
            {
                ArrayList ParameterList = new ArrayList();
                ParameterList.Clear();
                ParameterList.Add(UserID); //0
                ParameterList.Add(CreateDate); //1
                ParameterList.Add(txtAccNo.Text); //2
                ParameterList.Add(SLP_AccDate.Text); //3
                ParameterList.Add(txtPurNo.Text); //(4)[@採購單號]
                ParameterList.Add(txtShipNo.Text); //(5)[@廠商送貨單號]
                ParameterList.Add(txtInvoiceNo.Text); //(6)[@發票號碼]
                ParameterList.Add(TaxAmount); //(7)[@應稅總額]
                ParameterList.Add(UnTaxAmount1); //(8)[@未稅總額]
                ParameterList.Add(Tax); //(9)[@稅額]
                ParameterList.Add(dtMain.Rows[0]["UPDATEDATE"]);//10
                ParameterList.Add(dtMain.Rows[0]["UPDATEUID"]);//11

                //dt.Columns.Remove("ItemCode"); //商品條碼
                //dt.Columns.Remove("PeriodCode"); //期別條碼
                //dt.Columns.Remove("ItemName"); //商品名稱
                //dt.Columns.Remove("TAcc_Qty"); //總驗收數
                //dt.Columns.Remove("TaxType"); //稅別

                //過濾贈品明細,清除不必要的資料
                //dtGift.Columns.Remove("GiftName");
                //dtGift.Columns.Remove("accept_accqty");
                //dtGift.Columns.Remove("SQty");

                string strAcceptDate = SLP_AccDate.Text.Substring(0, 4) + SLP_AccDate.Text.Substring(5, 2) + SLP_AccDate.Text.Substring(8, 2);
                string strNow = DateTime.Now.ToString("yyyyMMdd");

                if (int.Parse(strNow) > int.Parse(strAcceptDate))
                {
                    dbo.UpdateAccept_2(ParameterList, dt, dtGift, null, out Statue, out ErrorItem, out ErrorMsg);
                }
                else
                {
                    dbo.UpdateAccept(ParameterList, dt, dtGift, null, out Statue, out ErrorItem, out ErrorMsg);
                }

                Response.Redirect("VGI012.aspx?Code=VGI01&PageMode=0&AcceptNo=" + txtAccNo.Text + "&TimeStamp=" + PageTimeStamp.Value);
            }

            Session["MainData" + PageTimeStamp.Value] = null;
            Session["DetailData" + PageTimeStamp.Value] = null;
        }
        catch (Exception ex)
        {
            //ResultMsgLabel.Text = ErrorMsg;
            ErrorMsgLabel.Text = ex.Message;

            Session["MainData" + PageTimeStamp.Value] = null;
            Session["DetailData" + PageTimeStamp.Value] = null;
        }
        finally
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "savingFlagJs", "savingflag=false;", true);
        }
    }