原因:
在 TipTop AXM520 中,沒有信用查核放行的單子可拋轉至 EasyFlow 簽核,且因 EasyFlow 版本為 .net ,鼎新將 CS 檔包成 DLL 檔了,沒有 Code ,故無法在出貨單拋轉至 EasyFlow 簽核完成時回寫 TipTop .
故現行公司的做法是:
需要放行時由相關人員填寫紙本的信用查核放行單,依核決權限簽核後,交由會計至下面欄位勾選允許放行.
流程改善:
1. 當需要放行時,負責的人員至 EasyFlow 開立信用查詢放行單,依核決權限簽核,
當簽核完成後,更新 TipTop DB OGA903 欄位(改為Y)
2.
防呆:
a)送出前檢查: 須為出貨單 / 確認碼不為X:作廢 / 狀況碼不為9:作廢 / 信用額度查核放行不為Y /
Gridview裡面的單號須為同一客戶且幣別相同
b)簽核完成後檢查:流程中是否有會計部門的員工
c)輸入出貨單單號自動帶出該訂單之金額
3.
<!--[endif]-->檢查後帶出相關資料:
a)客戶編號 / 客戶名稱 / 授信條件 / 付款條件 / 幣別 / 本幣金額
b)計算出原幣金額(單價*數量*匯率)
c)檢查通過才會出現送出的按鈕,檢查不通過會跳出視窗題是哪邊錯誤
#region 簽核流程結束時要處理的事情 protected override void AfterApprove() { if (this.BlnCaseClosed && this.AryFlowProperty.SerialSignResult == "2") { //先判斷流程中是否有財會部的人 string sql_EFdept = @"select * from resdd as D where resdd001='表單TABLE' and resdd002='"+this.StrSheetNo+"' and exists ( select '"+"x"+"' from resak X where X.resak001 = D.resdd008 and (X.resak015 = 'FN3000') )"; DataSet set_EFdept = this.m_objDB.CreateRecordset(" use EFNETDB;" + sql_EFdept, this.Session["strProcID"].ToString()); DataTable temp_EFdept = set_EFdept.Tables[0]; if (temp_EFdept.Rows.Count == 0) { //把ERROR存成TXT檔 } else { StringBuilder builder = new StringBuilder(); builder.Append(" use EFNETDB;"); builder.Append(" select saleno "); builder.Append(" FROM 表單TABLEb "); //表單代號,表單編號 builder.AppendFormat(" WHERE 表單TABLEb001='{0}' ", this.formID); builder.AppendFormat(" AND 表單TABLEb002='{0}' ", this.StrSheetNo); DataSet set_saleno=this.m_objDB.CreateRecordset(builder.ToString(),this.Session["strProcID"].ToString()); DataTable temp_saleno = set_saleno.Tables[0]; foreach (DataRow saleno_read in temp_saleno.Rows) { string sql_OGAFILE = @"UPDATE OPENQUERY(ORACLE,' select oga903 from TT.oga_file where oga01=''" + saleno_read["saleno"] + "''') SET OGA903='Y'"; this.m_objDB.ExecuteSQL(sql_OGAFILE.ToString(),this.Session["strProcID"].ToString()); } } } #region 按下檢查時要做的事情 protected void butcheck_Click(object sender, EventArgs e) { //先清空textbox base.BtnCreateToolSendForm.Attributes.Add("style", "display:none");//隱藏送出的按鈕 int rows_count = MasterObj.DetailObjs[0].NewRows.Count;//取得grid有幾列資料 System.Text.StringBuilder sb = new System.Text.StringBuilder(); string customer_1 = "";//客戶名稱 string customer_no = "";//客戶編號 string terms_payment = "";//付款條件 int customer_i = 1; string currency_1 = "";//幣別 double local_currency = 0.0;//本幣未稅金額NTD double org_currency = 0.0;//原幣未稅金額 double credit = 0.0; //授信額度 double rate = 0.0; //匯率 string txt_saleno = "";//銷貨單號 bool bPass = true; if (rows_count == 0) { MessageBox.Show("請先輸入訂單編號"); } else { foreach (DscRow dscRow in MasterObj.DetailObjs[0].NewRows) { string sqlstring_TT = @"Select * From OPENQUERY(ORACLE, ' select oga01 as 銷貨單號,oga03 as 客戶編號,oga032 as 客戶名稱,oga903 as 是否放行,oga55 as 狀況碼, ogaconf as 核准碼,oga09 as 單據別,oag02 as 付款條件,oga24 as 匯率, oga50 as 出貨金額,OCCG03 as 授信額度,oga23 as 幣別,oga50 as 原幣未稅金額,( select sum(omb16) from TT.omb_file where TT.oga_file.oga01=omb31 ) as 本幣未稅金額 from TT.oga_file join TT.oag_file on oga32=oag01 join TT.occg_file on OCCG01=oga03 where oga01=''" + dscRow["saleno"].Value.ToString() + "''')"; DataSet set_TT = this.m_objDB.CreateRecordset(" use EFNETDB;" +sqlstring_TT,this.Session["strProcID"].ToString()); DataTable dtTemp_TT = set_TT.Tables[0]; if (dtTemp_TT.Rows.Count == 0) { sb.Append("查無'" + dscRow["saleno"].Value.ToString() + "'的訂單資料,請檢查訂單號碼是否錯誤\r\n"); bPass = false; } else { foreach (DataRow s_read in dtTemp_TT.Rows) { if (s_read["單據別"].ToString().Trim() == "1") { sb.Append("單號:" + s_read["銷貨單號"] + "是出貨通知單喔~請再確認\r\n"); bPass = false; } else if (s_read["核准碼"].ToString().Trim()=="X") { sb.Append("單號:" + s_read["銷貨單號"] + "核准碼是作廢'X',請再確認"); bPass = false; } else if (s_read["是否放行"].ToString().Trim()!= "N") { sb.Append("單號:" + s_read["銷貨單號"] + "已放行,請再確認.\r\n"); bPass = false; } else { if (customer_i == 1) { customer_1 = s_read["客戶名稱"].ToString(); currency_1 = s_read["幣別"].ToString(); double x = 0.0; bool flag_1 = double.TryParse(s_read["匯率"].ToString(), out x); bool flag_2 = double.TryParse(s_read["原幣未稅金額"].ToString(), out x); bool flag_3 = double.TryParse(s_read["授信額度"].ToString(), out x); if (flag_1 && flag_2 && flag_3) { rate = double.Parse(s_read["匯率"].ToString()); org_currency = double.Parse(s_read["原幣未稅金額"].ToString()); credit = double.Parse(s_read["授信額度"].ToString()); } customer_no = s_read["客戶編號"].ToString(); terms_payment = s_read["付款條件"].ToString(); local_currency = rate * org_currency; txt_saleno = s_read["銷貨單號"].ToString(); } else { if (customer_1 != s_read["客戶名稱"].ToString()) { sb.Append("單號:" + s_read["銷貨單號"] + "公司名稱與其他不同"); bPass = false; } if (currency_1 != s_read["幣別"].ToString()) { sb.Append("單號:" + s_read["銷貨單號"] + "幣別與其他不同.\r\n"); bPass = false; } if (txt_saleno == s_read["銷貨單號"].ToString()) { sb.Append("單號:" + s_read["銷貨單號"] + "重複.\r\n"); bPass = false; } org_currency = org_currency + (double.Parse(s_read["原幣未稅金額"].ToString())); local_currency = local_currency + (rate * (double.Parse(s_read["原幣未稅金額"].ToString()))); } } } } customer_i++; } } string ErrorMsg = sb.ToString(); if (bPass && butcheck.ToolTip != "0") { //Lucas 觸發 refresh 重新解悉流程 string str_java = "document.getElementById('" +base.BtnCreateToolRefresh.ClientID + "').click();"; Page.ClientScript.RegisterStartupScript(typeof(string), "jva", str_java, true); base.BtnCreateToolSendForm.Attributes.Add("style", "display"); butcheck.ToolTip = "0"; butcheck.Text = "已檢查"; currencymoney.Text = org_currency.ToString();//原幣未稅金額 orgmoney.Text = local_currency.ToString(); customerno.Text = customer_no; overdue3.Text = terms_payment; credit3.Text = credit.ToString(); } else { base.BtnCreateToolSendForm.Attributes.Add("style", "display:none"); butcheck.ToolTip = ""; MessageBox.Show("錯誤訊息如下:\r\n" + ErrorMsg); } } #endregion }
沒有留言 :
張貼留言