//存檔 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); } }