using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using GThinking.N_MODEL.Page; using GThinking.N_MISPRO.Data; using GThinking.N_MISPRO.Utility; using GThinking.N_CONTROL; using GThinking.N_MISPROAS; using System.Collections.Generic; namespace GThinking.N_XLXSBJ { public partial class CLHQ_DRInfo : SingleCardBase { CLHQ_DR entity = new CLHQ_DR(); #region page类事件 protected void Page_Load(object sender, EventArgs e) { this.UMID = 100860003; this.UMName = "线缆销售报价材料行情"; base.CurMaster = Master; base.CurEntity = entity; this.PageHeight = 400; this.PageWidth = 500; Master.EnableAttachBtn = false; Master.EnableCancelBtn = false; Master.EnableCopyBtn = false; Master.EnableDeleteBtn = false; Master.EnableEditBtn = false; Master.EnableInsertBtn = false; Master.EnablePrintBtn = false; Master.EnableRefreshBtn = false; Master.EnableSaveBtn = false; fupdPost.FileSaveType = gtAsyncFileUpload.DFileSaveType.SaveToPath; if (AppRuntime.BitType == AppBitType.Bit32) fupdPost.Filter = "XLS"; else // AppBitType.Bit64 fupdPost.Filter = "XLS,XLSX"; base.InitPage(); if (!IsPostBack) { InitControls(); } } #endregion #region 控件事件 protected void btnQD_Click(object sender, EventArgs e) { if (fupdPost.FilePath.Equals("")) { ShowMessage("请选择需要导入的文件!"); return; } TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sSQL = new TSQL(dberp); try { lblTitle.Text = "正在导入数据,请稍后..."; dberp.BeginTrans(); DataSet aDataExcel = new DataSet(); if (AppRuntime.BitType == AppBitType.Bit32) aDataExcel = XLBJDUtils.ReadFromExcelFile(fupdPost.FilePath, 0, ""); else // AppBitType.Bit64 ReadWJ(fupdPost.FilePath, ref aDataExcel); ExcelColumnValid(aDataExcel); InsertMX(dberp, sSQL, aDataExcel); dberp.CommitTrans(); if (PageParam.GetRTrimString("txtNeedCallBackCID").Equals("")) { ShowMessage("导入成功!"); CloseWindow(); } else { DialogOperationScript dos = new DialogOperationScript(this); dos.SetOwnerControlValue(PageParam.GetRTrimString("txtNeedCallBackCID"), "Y"); dos.CloseSelf(); dos.Execute(); } } catch (Exception ex) { lblTitle.Text = ""; dberp.RollbackTrans(); ShowMessage(ex.Message); } } protected void btnQX_Click(object sender, EventArgs e) { CloseWindow(); } #endregion #region 自定义事件 private void InsertMX(TDatabase dberp, TSQL sSQL, DataSet ds) { string sBJU013 = GetOption("BJU013").Trim(); string sBDQK = ""; string sUserName = tSession.UserName; string sHSJE = ""; string sWHSJ = DateTime.Now.ToString().Trim(); foreach (DataRow Row in ds.Tables[0].Rows) { string sBJCLID = Row[0].ToString().Trim(); if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSBJCL where XLXSBJCL_BJCLID = '{0}' and isnull(XLXSBJCL_TYBZ,'N') = 'Y' ", sBJCLID))) continue; if (CMISproDataBase.ExistsRecord("DBERP", string.Format("select 1 from XLXSBJCL where XLXSBJCL_BJCLID = '{0}' and isnull(XLXSBJCL_SFQR,'N') = 'N' ", sBJCLID))) continue; bool bExist =false; double dZZSL = 0; double dYZZSL = 0; bool bSFJGCL = false; double dYCLJG = 0; double dYCGJG = 0; string sJGYBJCLID1 = string.Empty; //报价材信息分析:是否存在、税率、是否加工材料、原材料价格、原采购价格、原增值税率 BJCLXX(sBJCLID, chkJGHS.Checked, ref bExist, ref dZZSL, ref bSFJGCL, ref dYCLJG, ref dYCGJG, ref dYZZSL, ref sJGYBJCLID1); if (!bExist) continue; //获取导入的材料价格、采购价格、加工费 double dDRCLJG = 0; double dDRCGJG = 0; double dDRJGF = 0; if (sBJU013.Equals("0")) { dDRCLJG = CMISproConvert.StrToFloat(Row[2].ToString().Trim()); dDRCGJG = CMISproConvert.StrToFloat(Row[3].ToString().Trim()); dDRJGF = CMISproConvert.StrToFloat(Row[4].ToString().Trim()); } else if (sBJU013.Equals("1")) { dDRCLJG = CMISproConvert.StrToFloat(Row[2].ToString().Trim()); dDRJGF = CMISproConvert.StrToFloat(Row[3].ToString().Trim()); } else if (sBJU013.Equals("2")) { dDRCGJG = CMISproConvert.StrToFloat(Row[2].ToString().Trim()); dDRJGF = CMISproConvert.StrToFloat(Row[3].ToString().Trim()); } if ((dDRCLJG == 0 && dDRCGJG == 0 && dDRJGF == 0) || (dDRCLJG < 0 || dDRCGJG < 0 )) continue; if (bSFJGCL&&((dYCLJG + dDRJGF) < 0 || (dYCGJG + dDRJGF) < 0)) continue; int iNumberDecimal = XLBJDUtils.BJCLPriceDecimal; dDRCLJG = NumberUtils.RoundX(dDRCLJG, iNumberDecimal); dDRCGJG = NumberUtils.RoundX(dDRCGJG, iNumberDecimal); dDRJGF = NumberUtils.RoundX(dDRJGF, iNumberDecimal); double dHSCLJG = 0; double dHSCGJG = 0; double dHSJGF = 0; double dWSCLJG = 0; double dWSCGJG = 0; double dWSJGF = 0; double dWSJG1 = 0; double dHSJG1 = 0; double dJGBL1 = 1; #region 为价格赋值 if (chkJGHS.Checked) { if (bSFJGCL) { dHSCLJG = NumberUtils.RoundX(dYCLJG + dDRJGF, iNumberDecimal); dHSCGJG = NumberUtils.RoundX(dYCGJG + dDRJGF, iNumberDecimal); dHSJGF = NumberUtils.RoundX(dDRJGF, iNumberDecimal); dWSJGF = NumberUtils.RoundX(dHSJGF / (1 + (dZZSL / 100)), iNumberDecimal); dWSCLJG = NumberUtils.RoundX(dYCLJG / (1 + (dZZSL / 100)), iNumberDecimal) + dWSJGF; dWSCGJG = NumberUtils.RoundX(dYCGJG / (1 + (dZZSL / 100)), iNumberDecimal) + dWSJGF; dHSJG1 = NumberUtils.RoundX(dYCLJG, iNumberDecimal); dWSJG1 = NumberUtils.RoundX(dYCLJG / (1 + (dZZSL / 100)), iNumberDecimal); } else { if (sBJU013.Equals("0")) { dHSCLJG = NumberUtils.RoundX(dDRCLJG, iNumberDecimal); dHSCGJG = NumberUtils.RoundX(dDRCGJG, iNumberDecimal); dWSCLJG = NumberUtils.RoundX(dHSCLJG / (1 + (dZZSL / 100)), iNumberDecimal); dWSCGJG = NumberUtils.RoundX(dHSCGJG / (1 + (dZZSL / 100)), iNumberDecimal); } else if (sBJU013.Equals("1")) { dHSCLJG = NumberUtils.RoundX(dDRCLJG, iNumberDecimal); dWSCLJG = NumberUtils.RoundX(dHSCLJG / (1 + (dZZSL / 100)), iNumberDecimal); } else if (sBJU013.Equals("2")) { dHSCGJG = NumberUtils.RoundX(dDRCGJG, iNumberDecimal); dWSCGJG = NumberUtils.RoundX(dHSCGJG / (1 + (dZZSL / 100)), iNumberDecimal); } } } else { if (bSFJGCL) { dWSCLJG = NumberUtils.RoundX(dYCLJG + dDRJGF, iNumberDecimal); dWSCGJG = NumberUtils.RoundX(dYCGJG + dDRJGF, iNumberDecimal); dWSJGF = NumberUtils.RoundX(dDRJGF, iNumberDecimal); dHSJGF = NumberUtils.RoundX(dWSJGF * (1 + (dZZSL / 100)), iNumberDecimal); dHSCLJG = NumberUtils.RoundX(dYCLJG * (1 + (dZZSL / 100)), iNumberDecimal) + dHSJGF; dHSCGJG = NumberUtils.RoundX(dYCGJG * (1 + (dZZSL / 100)), iNumberDecimal) + dHSJGF; dWSJG1 = NumberUtils.RoundX(dYCLJG, iNumberDecimal); dHSJG1 = NumberUtils.RoundX(dYCLJG * (1 + (dZZSL / 100)), iNumberDecimal); } else { if (sBJU013.Equals("0")) { dWSCLJG = NumberUtils.RoundX(dDRCLJG, iNumberDecimal); dWSCGJG = NumberUtils.RoundX(dDRCGJG, iNumberDecimal); dHSCLJG = NumberUtils.RoundX(dWSCLJG * (1 + (dZZSL / 100)), iNumberDecimal); dHSCGJG = NumberUtils.RoundX(dWSCGJG * (1 + (dZZSL / 100)), iNumberDecimal); } else if (sBJU013.Equals("1")) { dWSCLJG = NumberUtils.RoundX(dDRCLJG, iNumberDecimal); dHSCLJG = NumberUtils.RoundX(dWSCLJG * (1 + (dZZSL / 100)), iNumberDecimal); } else if (sBJU013.Equals("2")) { dWSCGJG = NumberUtils.RoundX(dDRCGJG, iNumberDecimal); dHSCGJG = NumberUtils.RoundX(dWSCGJG * (1 + (dZZSL / 100)), iNumberDecimal); } } } #endregion sSQL.Clear(); sSQL.Add(" select XLXSCLHQ_YXQS,XLXSCLHQ_BDQK,XLXSCLHQ_HSJG,XLXSCLHQ_WHR,XLXSCLHQ_WHSJ from XLXSCLHQ where XLXSCLHQ_BJCLID =:pBJCLID and XLXSCLHQ_JGBID ='ZZZZZZZZ' and XLXSCLHQ_YXQS = :pDate"); sSQL.Add(" order by XLXSCLHQ_YXQS desc "); sSQL.ParamByName("pBJCLID").Value = sBJCLID; sSQL.ParamByName("pDate").Value = CMISproConvert.StrToDateTime(DateTime.Now.ToShortDateString().Trim()); DataSet dsCLHQ = dberp.OpenDataSet(sSQL); if (dsCLHQ.Tables[0].Rows.Count > 0) { sBDQK = dsCLHQ.Tables[0].Rows[0]["XLXSCLHQ_BDQK"].ToString().Trim(); sHSJE = dsCLHQ.Tables[0].Rows[0]["XLXSCLHQ_HSJG"].ToString().Trim(); sUserName = dsCLHQ.Tables[0].Rows[0]["XLXSCLHQ_WHR"].ToString().Trim(); sWHSJ = dsCLHQ.Tables[0].Rows[0]["XLXSCLHQ_WHSJ"].ToString().Trim(); CLHQInfo.GetBDQK(sWHSJ, sUserName, sHSJE, ref sBDQK); string sYXQS = dsCLHQ.Tables[0].Rows[0]["XLXSCLHQ_YXQS"].ToString().Trim(); sSQL.Clear(); sSQL.Add(" update XLXSCLHQ set XLXSCLHQ_WHR =:pWHR,XLXSCLHQ_WHRID = :pWHRID,XLXSCLHQ_WHSJ = :pWHSJ, "); sSQL.Add(" XLXSCLHQ_BDQK=:XLXSCLHQ_BDQK "); sSQL.ParamByName("pWHR").Value = tSession.UserName; sSQL.ParamByName("pWHRID").Value = tSession.UserId; sSQL.ParamByName("pWHSJ").Value = DateTime.Now; sSQL.ParamByName("XLXSCLHQ_BDQK").Value = sBDQK; if (bSFJGCL) { sSQL.Add(" ,XLXSCLHQ_WSJG = :pWSJG "); sSQL.Add(" ,XLXSCLHQ_HSJG = :pHSJG "); sSQL.Add(" ,XLXSCLHQ_WSCGJG = :pWSCGJG "); sSQL.Add(" ,XLXSCLHQ_HSCGJG = :pHSCGJG "); sSQL.Add(" ,XLXSCLHQ_WSJGF = :pWSJGF "); sSQL.Add(" ,XLXSCLHQ_HSJGF = :pHSJGF "); sSQL.Add(" ,XLXSCLHQ_WSJG1 = :pWSJG1 "); sSQL.Add(" ,XLXSCLHQ_HSJG1 = :pHSJG1 "); sSQL.Add(" ,XLXSCLHQ_JGYBJCLID1 = :pJGYBJCLID1 "); sSQL.Add(" ,XLXSCLHQ_JGBL1 = :pJGBL1 "); sSQL.ParamByName("pWSJG").Value = dWSCLJG; sSQL.ParamByName("pHSJG").Value = dHSCLJG; sSQL.ParamByName("pWSCGJG").Value = dWSCGJG; sSQL.ParamByName("pHSCGJG").Value = dHSCGJG; sSQL.ParamByName("pWSJGF").Value = dWSJGF; sSQL.ParamByName("pHSJGF").Value = dHSJGF; sSQL.ParamByName("pWSJG1").Value = dWSJG1; sSQL.ParamByName("pHSJG1").Value = dHSJG1; sSQL.ParamByName("pJGYBJCLID1").Value = sJGYBJCLID1; sSQL.ParamByName("pJGBL1").Value = dJGBL1; } else { if (sBJU013.Equals("0")) { sSQL.Add(" ,XLXSCLHQ_WSJG = :pWSJG "); sSQL.Add(" ,XLXSCLHQ_HSJG = :pHSJG "); sSQL.Add(" ,XLXSCLHQ_WSCGJG = :pWSCGJG "); sSQL.Add(" ,XLXSCLHQ_HSCGJG = :pHSCGJG "); sSQL.ParamByName("pWSJG").Value = dWSCLJG; sSQL.ParamByName("pHSJG").Value = dHSCLJG; sSQL.ParamByName("pWSCGJG").Value = dWSCGJG; sSQL.ParamByName("pHSCGJG").Value = dHSCGJG; } else if (sBJU013.Equals("1")) { sSQL.Add(" ,XLXSCLHQ_WSJG = :pWSJG "); sSQL.Add(" ,XLXSCLHQ_HSJG = :pHSJG "); sSQL.ParamByName("pWSJG").Value = dWSCLJG; sSQL.ParamByName("pHSJG").Value = dHSCLJG; } else if (sBJU013.Equals("2")) { sSQL.Add(" ,XLXSCLHQ_WSCGJG = :pWSCGJG "); sSQL.Add(" ,XLXSCLHQ_HSCGJG = :pHSCGJG "); sSQL.ParamByName("pWSCGJG").Value = dWSCGJG; sSQL.ParamByName("pHSCGJG").Value = dHSCGJG; } } sSQL.Add(" where XLXSCLHQ_BJCLID =:pBJCLID and XLXSCLHQ_JGBID ='ZZZZZZZZ' and XLXSCLHQ_YXQS = :pDate "); sSQL.ParamByName("pBJCLID").Value = sBJCLID; sSQL.ParamByName("pDate").Value = CMISproConvert.StrToDateTime(sYXQS); dberp.ExecSQL(sSQL); } else { sSQL.Clear(); sSQL.Add(" insert into XLXSCLHQ ( XLXSCLHQ_YXQS,XLXSCLHQ_BZ,XLXSCLHQ_WHRID,XLXSCLHQ_WHR,XLXSCLHQ_WHSJ,XLXSCLHQ_JGBID,XLXSCLHQ_BJCLID,"); if (bSFJGCL) { sSQL.Add(" XLXSCLHQ_WSJG1,XLXSCLHQ_HSJG1,XLXSCLHQ_JGYBJCLID1,XLXSCLHQ_JGBL1, "); sSQL.Add(" XLXSCLHQ_WSJG,XLXSCLHQ_HSJG,XLXSCLHQ_WSCGJG,XLXSCLHQ_HSCGJG,XLXSCLHQ_WSJGF,XLXSCLHQ_HSJGF ) "); } else { if (sBJU013.Equals("0")) { sSQL.Add(" XLXSCLHQ_WSJG,XLXSCLHQ_HSJG,XLXSCLHQ_WSCGJG,XLXSCLHQ_HSCGJG ) "); } else if (sBJU013.Equals("1")) { sSQL.Add(" XLXSCLHQ_WSJG,XLXSCLHQ_HSJG ) "); } else if (sBJU013.Equals("2")) { sSQL.Add(" XLXSCLHQ_WSCGJG,XLXSCLHQ_HSCGJG ) "); } } sSQL.Add(" values ( :XLXSCLHQ_YXQS,' ',:XLXSCLHQ_WHRID,:XLXSCLHQ_WHR,:XLXSCLHQ_WHSJ,'ZZZZZZZZ',:XLXSCLHQ_BJCLID,"); sSQL.ParamByName("XLXSCLHQ_YXQS").Value = CMISproConvert.StrToDateTime(DateTime.Now.ToShortDateString().Trim()); sSQL.ParamByName("XLXSCLHQ_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLXSCLHQ_WHR").Value = tSession.UserName; sSQL.ParamByName("XLXSCLHQ_WHSJ").Value = DateTime.Now; sSQL.ParamByName("XLXSCLHQ_BJCLID").Value = sBJCLID; if (bSFJGCL) { sSQL.Add(" :XLXSCLHQ_WSJG1,:XLXSCLHQ_HSJG1,:XLXSCLHQ_JGYBJCLID1,:XLXSCLHQ_JGBL1, "); sSQL.Add(" :XLXSCLHQ_WSJG,:XLXSCLHQ_HSJG,:XLXSCLHQ_WSCGJG,:XLXSCLHQ_HSCGJG,:XLXSCLHQ_WSJGF,:XLXSCLHQ_HSJGF ) "); sSQL.ParamByName("XLXSCLHQ_WSJG1").Value = dWSJG1; sSQL.ParamByName("XLXSCLHQ_HSJG1").Value = dHSJG1; sSQL.ParamByName("XLXSCLHQ_JGYBJCLID1").Value = sJGYBJCLID1; sSQL.ParamByName("XLXSCLHQ_JGBL1").Value = dJGBL1; sSQL.ParamByName("XLXSCLHQ_WSJG").Value = dWSCLJG; sSQL.ParamByName("XLXSCLHQ_HSJG").Value = dHSCLJG; sSQL.ParamByName("XLXSCLHQ_WSCGJG").Value = dWSCGJG; sSQL.ParamByName("XLXSCLHQ_HSCGJG").Value = dHSCGJG; sSQL.ParamByName("XLXSCLHQ_WSJGF").Value = dWSJGF; sSQL.ParamByName("XLXSCLHQ_HSJGF").Value = dHSJGF; } else { if (sBJU013.Equals("0")) { sSQL.Add(" :XLXSCLHQ_WSJG,:XLXSCLHQ_HSJG,:XLXSCLHQ_WSCGJG,:XLXSCLHQ_HSCGJG ) "); sSQL.ParamByName("XLXSCLHQ_WSJG").Value = dWSCLJG; sSQL.ParamByName("XLXSCLHQ_HSJG").Value = dHSCLJG; sSQL.ParamByName("XLXSCLHQ_WSCGJG").Value = dWSCGJG; sSQL.ParamByName("XLXSCLHQ_HSCGJG").Value = dHSCGJG; } else if (sBJU013.Equals("1")) { sSQL.Add(" :XLXSCLHQ_WSJG,:XLXSCLHQ_HSJG ) "); sSQL.ParamByName("XLXSCLHQ_WSJG").Value = dWSCLJG; sSQL.ParamByName("XLXSCLHQ_HSJG").Value = dHSCLJG; } else if (sBJU013.Equals("2")) { sSQL.Add(" :XLXSCLHQ_WSCGJG,:XLXSCLHQ_HSCGJG ) "); sSQL.ParamByName("XLXSCLHQ_WSCGJG").Value = dWSCGJG; sSQL.ParamByName("XLXSCLHQ_HSCGJG").Value = dHSCGJG; } } dberp.ExecSQL(sSQL); //并找到最近的一条记录,若其有效期止为空就将其置为所保存记录的有效期始减一天。 sSQL.Clear(); sSQL.Add(" update XLXSCLHQ set XLXSCLHQ_YXQZ=dateadd(day,-1,:pYXQS) "); sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'"); sSQL.Add(" and XLXSCLHQ_BJCLID=:pBJCLID"); sSQL.Add(" and XLXSCLHQ_YXQS="); sSQL.Add(" ("); sSQL.Add(" select max(XLXSCLHQ_YXQS) as maxYXQS"); sSQL.Add(" from XLXSCLHQ"); sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' "); sSQL.Add(" and XLXSCLHQ_BJCLID=:pBJCLID"); sSQL.Add(" and XLXSCLHQ_YXQS<=dateadd(day,-1,:pYXQS) "); sSQL.Add(" )"); sSQL.Add(" and XLXSCLHQ_YXQZ is null "); sSQL.ParamByName("pBJCLID").Value = sBJCLID; sSQL.ParamByName("pYXQS").Value = CMISproConvert.StrToDateTime(DateTime.Now.ToShortDateString().Trim()); dberp.ExecSQL(sSQL); } sSQL.Clear(); sSQL.Add(" select XLXSBJCL_BJCLID from XLXSBJCL where XLXSBJCL_JGYBJCLID = :pBJCLID "); sSQL.ParamByName("pBJCLID").Value = sBJCLID; ds = dberp.OpenDataSet(sSQL); if (ds.Tables[0].Rows.Count > 0) { foreach (DataRow trow in ds.Tables[0].Rows) { string sJGBJCLID = trow["XLXSBJCL_BJCLID"].ToString().Trim(); sSQL.Clear(); sSQL.Add(" select XLXSCLHQ_YXQS,XLXSCLHQ_BDQK,XLXSCLHQ_HSJG,XLXSCLHQ_WHR,XLXSCLHQ_WHSJ from XLXSCLHQ where XLXSCLHQ_BJCLID =:pBJCLID and XLXSCLHQ_JGBID ='ZZZZZZZZ' and XLXSCLHQ_YXQS = :pDate"); sSQL.Add(" order by XLXSCLHQ_YXQS desc "); sSQL.ParamByName("pBJCLID").Value = sJGBJCLID; sSQL.ParamByName("pDate").Value = DateTime.Now.ToShortDateString().Trim(); DataSet dsQry = dberp.OpenDataSet(sSQL); if (dsQry.Tables[0].Rows.Count > 0) { sBDQK = dsQry.Tables[0].Rows[0]["XLXSCLHQ_BDQK"].ToString().Trim(); sHSJE = dsQry.Tables[0].Rows[0]["XLXSCLHQ_HSJG"].ToString().Trim(); sUserName = dsQry.Tables[0].Rows[0]["XLXSCLHQ_WHR"].ToString().Trim(); sWHSJ = dsQry.Tables[0].Rows[0]["XLXSCLHQ_WHSJ"].ToString().Trim(); CLHQInfo.GetBDQK(sWHSJ, sUserName, sHSJE, ref sBDQK); sSQL.Clear(); sSQL.Add(" update XLXSCLHQ set XLXSCLHQ_WHR =:pWHR,XLXSCLHQ_WHRID = :pWHRID,XLXSCLHQ_WHSJ = :pWHSJ, "); sSQL.Add(" XLXSCLHQ_BDQK=:XLXSCLHQ_BDQK "); sSQL.ParamByName("pWHR").Value = tSession.UserName; sSQL.ParamByName("pWHRID").Value = tSession.UserId; sSQL.ParamByName("pWHSJ").Value = DateTime.Now; sSQL.ParamByName("XLXSCLHQ_BDQK").Value = sBDQK; sSQL.Add(" ,XLXSCLHQ_WSJG1 = :pWSJG "); sSQL.Add(" ,XLXSCLHQ_HSJG1 = :pHSJG "); sSQL.Add(" ,XLXSCLHQ_WSCGJG = XLXSCLHQ_WSJGF + :pWSCGJG "); sSQL.Add(" ,XLXSCLHQ_HSCGJG = XLXSCLHQ_HSJGF + :pHSCGJG "); ; sSQL.ParamByName("pWSJG").Value = dWSCLJG; sSQL.ParamByName("pHSJG").Value = dHSCLJG; sSQL.ParamByName("pWSCGJG").Value = dWSCGJG; sSQL.ParamByName("pHSCGJG").Value = dHSCGJG; sSQL.Add(" where XLXSCLHQ_BJCLID =:pBJCLID and XLXSCLHQ_JGBID ='ZZZZZZZZ' and XLXSCLHQ_YXQS = :pDate "); sSQL.ParamByName("pBJCLID").Value = sJGBJCLID; sSQL.ParamByName("pDate").Value = CMISproConvert.StrToDateTime(DateTime.Now.ToShortDateString().Trim()); dberp.ExecSQL(sSQL); } else { sSQL.Clear(); sSQL.Add(" insert into XLXSCLHQ( "); sSQL.Add(" XLXSCLHQ_BJCLID,XLXSCLHQ_JGBID, XLXSCLHQ_WSJG1,XLXSCLHQ_HSJG1,XLXSCLHQ_WSCGJG,XLXSCLHQ_HSCGJG,XLXSCLHQ_WSJGF,XLXSCLHQ_HSJGF, "); sSQL.Add(" XLXSCLHQ_JGYBJCLID1,XLXSCLHQ_JGBL1,XLXSCLHQ_YXQS,XLXSCLHQ_BZ, XLXSCLHQ_WHRID, XLXSCLHQ_WHR, XLXSCLHQ_WHSJ )"); sSQL.Add(" SELECT :pBJCLID,'ZZZZZZZZ', :XLXSCLHQ_WSJG,:XLXSCLHQ_HSJG, "); sSQL.Add(" :XLXSCLHQ_WSCGJG + isnull(XLXSCLHQ_WSJGF,0),:XLXSCLHQ_HSCGJG + isnull(XLXSCLHQ_HSJGF,0),"); sSQL.Add(" isnull(XLXSCLHQ_WSJGF,0),isnull(XLXSCLHQ_HSJGF,0), "); sSQL.Add(" XLXSCLHQ_JGYBJCLID1, isnull(XLXSCLHQ_JGBL1,0), "); sSQL.Add(" :pYXQS,:XLXSCLHQ_BZ, :XLXSCLHQ_WHRID, :XLXSCLHQ_WHR, :XLXSCLHQ_WHSJ from XLXSCLHQ "); sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'"); sSQL.Add(" and XLXSCLHQ_BJCLID=:pBJCLID"); sSQL.Add(" and XLXSCLHQ_YXQS="); sSQL.Add(" ("); sSQL.Add(" select max(XLXSCLHQ_YXQS) as maxYXQS"); sSQL.Add(" from XLXSCLHQ"); sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' "); sSQL.Add(" and XLXSCLHQ_BJCLID=:pBJCLID"); sSQL.Add(" and XLXSCLHQ_YXQS<=dateadd(day,0,:pYXQS) "); sSQL.Add(" )"); sSQL.Add(" and XLXSCLHQ_YXQZ is null "); sSQL.ParamByName("XLXSCLHQ_WSJG").Value = dWSCLJG; sSQL.ParamByName("XLXSCLHQ_HSJG").Value = dHSCLJG; sSQL.ParamByName("XLXSCLHQ_WSCGJG").Value = dWSCGJG; sSQL.ParamByName("XLXSCLHQ_HSCGJG").Value = dHSCGJG; sSQL.ParamByName("pYXQS").Value = CMISproConvert.StrToDateTime(DateTime.Now.ToShortDateString().Trim()); sSQL.ParamByName("XLXSCLHQ_BZ").Value = ""; sSQL.ParamByName("XLXSCLHQ_WHR").Value = tSession.UserName; sSQL.ParamByName("XLXSCLHQ_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLXSCLHQ_WHSJ").Value = DateTime.Now; sSQL.ParamByName("pBJCLID").Value = sJGBJCLID; dberp.ExecSQL(sSQL); //并找到最近的一条记录,若其有效期止为空就将其置为所保存记录的有效期始减一天。 sSQL.Clear(); sSQL.Add(" update XLXSCLHQ set XLXSCLHQ_YXQZ=dateadd(day,-1,:pYXQS) "); sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ'"); sSQL.Add(" and XLXSCLHQ_BJCLID=:pBJCLID"); sSQL.Add(" and XLXSCLHQ_YXQS="); sSQL.Add(" ("); sSQL.Add(" select max(XLXSCLHQ_YXQS) as maxYXQS"); sSQL.Add(" from XLXSCLHQ"); sSQL.Add(" where XLXSCLHQ_JGBID='ZZZZZZZZ' "); sSQL.Add(" and XLXSCLHQ_BJCLID=:pBJCLID"); sSQL.Add(" and XLXSCLHQ_YXQS<=dateadd(day,-1,:pYXQS) "); sSQL.Add(" )"); sSQL.Add(" and XLXSCLHQ_YXQZ is null "); sSQL.ParamByName("pBJCLID").Value = sJGBJCLID; sSQL.ParamByName("pYXQS").Value = CMISproConvert.StrToDateTime(DateTime.Now.ToShortDateString().Trim()); dberp.ExecSQL(sSQL); } //更新或插入后处理加工料的HSJG、WSJG sSQL.Clear(); sSQL.Add(" update XLXSCLHQ set XLXSCLHQ_WSJG=XLXSCLHQ_WSJG1*XLXSCLHQ_JGBL1+XLXSCLHQ_WSJGF, "); sSQL.Add(" XLXSCLHQ_HSJG=XLXSCLHQ_HSJG1*XLXSCLHQ_JGBL1+XLXSCLHQ_HSJGF "); sSQL.Add(" where XLXSCLHQ_BJCLID =:pBJCLID and XLXSCLHQ_JGBID ='ZZZZZZZZ' and XLXSCLHQ_YXQS = :pDate "); sSQL.ParamByName("pBJCLID").Value = sJGBJCLID; sSQL.ParamByName("pDate").Value = DateTime.Now.ToShortDateString().Trim(); dberp.ExecSQL(sSQL); SetWLHQ(dberp, sSQL, sJGBJCLID, dWSCLJG, dHSCLJG, dWSCGJG, dHSCGJG); } } } } //同步调整对应的物料行情 private void SetWLHQ(TDatabase dberp, TSQL sSQL, string sJGBJCLID, double dWSCLJG, double dHSCLJG, double dWSCGJG, double dHSCGJG) { sSQL.Clear(); sSQL.Add(" SELECT XLXSBJCLWL_WLID,XLXSBJCLWL_BJCLID,XLXSBJCL_BJCLMC FROM XLXSBJCLWL "); sSQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID=XLXSBJCLWL_BJCLID "); sSQL.Add(" WHERE 1 = 1 AND isnull(XLXSBJCL_BJCLMC, ' ')<> ' ' and XLXSBJCL_BJHQ = '2' and isnull(XLXSBJCL_JGYBJCLID,' ') <> ' ' and XLXSBJCLWL_BJCLID =:pJGBJCLID "); sSQL.ParamByName("pJGBJCLID").Value = sJGBJCLID; DataSet dsBJCLWL = dberp.OpenDataSet(sSQL); if (dsBJCLWL.Tables[0].Rows.Count > 0) { for (int j = 0; j < dsBJCLWL.Tables[0].Rows.Count; j++) { string sWLID = dsBJCLWL.Tables[0].Rows[j]["XLXSBJCLWL_WLID"].ToString().Trim(); sSQL.Clear(); //查询是否存在插入记录 sSQL.Add("select 1 from XLXSWLHQ where XLXSWLHQ_JGBID =' ' and XLXSWLHQ_YXQS= :pRQ and XLXSWLHQ_WLID = :pWLID "); sSQL.ParamByName("pRQ").Value = CMISproConvert.StrToDateTime(DateTime.Now.ToShortDateString().Trim()); sSQL.ParamByName("pWLID").Value = sWLID; DataSet dsWLHQ = dberp.OpenDataSet(sSQL); if (dsWLHQ.Tables[0].Rows.Count > 0) { sSQL.Clear(); sSQL.Add(" update XLXSWLHQ "); sSQL.Add(" set XLXSWLHQ_WSJG1 = :XLXSWLHQ_WSJG,XLXSWLHQ_HSJG1=:XLXSWLHQ_HSJG, "); sSQL.Add(" XLXSWLHQ_WSCGJG = (:XLXSWLHQ_WSCGJG + XLXSWLHQ_WSJGF),XLXSWLHQ_HSCGJG=(:XLXSWLHQ_HSCGJG + XLXSWLHQ_HSJGF), "); sSQL.Add(" XLXSWLHQ_YXQS = :XLXSWLHQ_YXQS, XLXSWLHQ_WHRID = :XLXSWLHQ_WHRID, XLXSWLHQ_WHR = :XLXSWLHQ_WHR, XLXSWLHQ_WHSJ = :XLXSWLHQ_WHSJ"); sSQL.Add(" where XLXSWLHQ_JGBID =' ' and XLXSWLHQ_YXQS= :pRQ and XLXSWLHQ_WLID = :pWLID "); sSQL.ParamByName("XLXSWLHQ_WSJG").Value = dWSCLJG; sSQL.ParamByName("XLXSWLHQ_HSJG").Value = dHSCLJG; sSQL.ParamByName("XLXSWLHQ_WSCGJG").Value = dWSCGJG; sSQL.ParamByName("XLXSWLHQ_HSCGJG").Value = dHSCGJG; sSQL.ParamByName("XLXSWLHQ_YXQS").Value = CMISproConvert.StrToDateTime(DateTime.Now.ToShortDateString().Trim()); sSQL.ParamByName("XLXSWLHQ_WHR").Value = tSession.UserName; sSQL.ParamByName("XLXSWLHQ_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLXSWLHQ_WHSJ").Value = DateTime.Now; sSQL.ParamByName("pRQ").Value = CMISproConvert.StrToDateTime(DateTime.Now.ToShortDateString().Trim()); sSQL.ParamByName("pWLID").Value = sWLID; dberp.ExecSQL(sSQL); } else { sSQL.Clear(); sSQL.Add(" insert into XLXSWLHQ( "); sSQL.Add(" XLXSWLHQ_WLID,XLXSWLHQ_JGBID, XLXSWLHQ_WSJG1,XLXSWLHQ_HSJG1, XLXSWLHQ_WSJGF,XLXSWLHQ_HSJGF,XLXSWLHQ_WSCGJG,XLXSWLHQ_HSCGJG,"); sSQL.Add(" XLXSWLHQ_JGYBJCLID1,XLXSWLHQ_JGBL1,XLXSWLHQ_YXQS, XLXSWLHQ_YXQZ, XLXSWLHQ_BZ, XLXSWLHQ_WHRID, XLXSWLHQ_WHR, XLXSWLHQ_WHSJ)"); sSQL.Add(" SELECT "); sSQL.Add(" :XLXSWLHQ_WLID,' ', :XLXSWLHQ_WSJG,:XLXSWLHQ_HSJG,"); sSQL.Add(" isnull(XLXSWLHQ_WSJGF,0),isnull(XLXSWLHQ_HSJGF,0), "); sSQL.Add(" :XLXSWLHQ_WSCGJG + isnull(XLXSWLHQ_WSJGF,0),:XLXSWLHQ_HSCGJG + isnull(XLXSWLHQ_HSJGF,0),"); sSQL.Add(" XLXSWLHQ_JGYBJCLID1,isnull(XLXSWLHQ_JGBL1,0), "); sSQL.Add(" :XLXSWLHQ_YXQS, :XLXSWLHQ_YXQZ, "); sSQL.Add(" :XLXSWLHQ_BZ, :XLXSWLHQ_WHRID, :XLXSWLHQ_WHR, :XLXSWLHQ_WHSJ "); sSQL.Add(" from XLXSWLHQ "); sSQL.Add(" where XLXSWLHQ_JGBID=' '"); sSQL.Add(" and XLXSWLHQ_WLID=:XLXSWLHQ_WLID"); sSQL.Add(" and XLXSWLHQ_YXQS="); sSQL.Add(" ("); sSQL.Add(" select max(XLXSWLHQ_YXQS) as maxYXQS"); sSQL.Add(" from XLXSWLHQ"); sSQL.Add(" where XLXSWLHQ_JGBID=' ' "); sSQL.Add(" and XLXSWLHQ_WLID=:XLXSWLHQ_WLID"); sSQL.Add(" and XLXSWLHQ_YXQS<=dateadd(day,0,:XLXSWLHQ_YXQS) "); sSQL.Add(" )"); sSQL.Add(" and XLXSWLHQ_YXQZ is null "); sSQL.ParamByName("XLXSWLHQ_WSJG").Value = dWSCLJG; sSQL.ParamByName("XLXSWLHQ_HSJG").Value = dHSCLJG; sSQL.ParamByName("XLXSWLHQ_WSCGJG").Value = dWSCGJG; sSQL.ParamByName("XLXSWLHQ_HSCGJG").Value = dHSCGJG; sSQL.ParamByName("XLXSWLHQ_YXQS").Value = CMISproConvert.StrToDateTime(DateTime.Now.ToShortDateString().Trim()); sSQL.ParamByName("XLXSWLHQ_YXQZ").Clear(); sSQL.ParamByName("XLXSWLHQ_WHR").Value = tSession.UserName; sSQL.ParamByName("XLXSWLHQ_WHRID").Value = tSession.UserId; sSQL.ParamByName("XLXSWLHQ_WHSJ").Value = DateTime.Now; sSQL.ParamByName("XLXSWLHQ_WLID").Value = sWLID; dberp.ExecSQL(sSQL); //并找到最近的一条记录,若其有效期止为空就将其置为所保存记录的有效期始减一天。 sSQL.Clear(); sSQL.Add(" update XLXSWLHQ set XLXSWLHQ_YXQZ=dateadd(day,-1,:pYXQS) "); sSQL.Add(" where XLXSWLHQ_JGBID=' '"); sSQL.Add(" and XLXSWLHQ_WLID=:pWLID"); sSQL.Add(" and XLXSWLHQ_YXQS="); sSQL.Add(" ("); sSQL.Add(" select max(XLXSWLHQ_YXQS) as maxYXQS"); sSQL.Add(" from XLXSWLHQ"); sSQL.Add(" where XLXSWLHQ_JGBID=' ' "); sSQL.Add(" and XLXSWLHQ_WLID=:pWLID"); sSQL.Add(" and XLXSWLHQ_YXQS<=dateadd(day,-1,:pYXQS) "); sSQL.Add(" )"); sSQL.Add(" and XLXSWLHQ_YXQZ is null "); sSQL.ParamByName("pWLID").Value = sWLID; sSQL.ParamByName("pYXQS").Value = CMISproConvert.StrToDateTime(DateTime.Now.ToShortDateString().Trim()); dberp.ExecSQL(sSQL); } //更新或插入后处理加工料的HSJG、WSJG sSQL.Clear(); sSQL.Add(" update XLXSWLHQ set XLXSWLHQ_WSJG=XLXSWLHQ_WSJG1*XLXSWLHQ_JGBL1+XLXSWLHQ_WSJGF, "); sSQL.Add(" XLXSWLHQ_HSJG=XLXSWLHQ_HSJG1*XLXSWLHQ_JGBL1+XLXSWLHQ_HSJGF "); sSQL.Add(" where XLXSWLHQ_JGBID =' ' and XLXSWLHQ_YXQS= :pRQ and XLXSWLHQ_WLID = :pWLID "); sSQL.ParamByName("pRQ").Value = CMISproConvert.StrToDateTime(DateTime.Now.ToShortDateString().Trim()); sSQL.ParamByName("pWLID").Value = sWLID; dberp.ExecSQL(sSQL); } } } //报价材信息分析:是否存在、税率、是否加工材料、原材料价格、原采购价格 private void BJCLXX(string sBJCLID, bool SFHS, ref bool bExist, ref double dZZSL, ref bool bSFJGCL, ref double dYCLJG, ref double dYCGJG, ref double dYZZSL, ref string sJGYBJCLID1) { bExist = false; dZZSL = 0; bSFJGCL = false; dYCLJG = 0; dYCGJG = 0; TDatabase dberp = TContextDatabases.GetDatabase("DBERP"); TSQL sSQL = new TSQL(dberp); sSQL.Clear(); sSQL.Add(" select XLXSBJCL_JGYBJCLID,XLXSBJCL_ZZSL from XLXSBJCL where XLXSBJCL_BJCLID= :pBJCLID "); sSQL.ParamByName("pBJCLID").Value = sBJCLID.Trim(); DataSet ds = dberp.OpenDataSet(sSQL); if (ds.Tables[0].Rows.Count > 0) { bExist = true; dZZSL = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSBJCL_ZZSL"].ToString().Trim()); if (!string.IsNullOrEmpty(ds.Tables[0].Rows[0]["XLXSBJCL_JGYBJCLID"].ToString().Trim())) { bSFJGCL = true; string sYBJCLID = ds.Tables[0].Rows[0]["XLXSBJCL_JGYBJCLID"].ToString().Trim(); sJGYBJCLID1 = sYBJCLID; sSQL.Clear(); sSQL.Add(" select XLXSCLHQ_WSJG,XLXSCLHQ_HSJG,XLXSCLHQ_WSCGJG,XLXSCLHQ_HSCGJG,XLXSBJCL_ZZSL from XLXSCLHQ "); sSQL.Add(" left join XLXSBJCL on XLXSBJCL_BJCLID = XLXSCLHQ_BJCLID "); sSQL.Add(" where XLXSCLHQ_BJCLID =:pYBJCLID and XLXSCLHQ_JGBID ='ZZZZZZZZ' "); sSQL.Add(" and ( XLXSCLHQ_YXQZ >= :pDate or XLXSCLHQ_YXQZ is null ) "); sSQL.Add(" and XLXSCLHQ_YXQS <= :pDate "); sSQL.Add(" order by XLXSCLHQ_YXQS desc "); sSQL.ParamByName("pYBJCLID").Value = sYBJCLID; sSQL.ParamByName("pDate").Value = CMISproConvert.StrToDateTime(DateTime.Now.ToShortDateString().Trim()); ds = dberp.OpenDataSet(sSQL); if (ds.Tables[0].Rows.Count > 0) { if (SFHS) { dYCLJG = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSCLHQ_HSJG"].ToString().Trim()); dYCGJG = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSCLHQ_HSCGJG"].ToString().Trim()); } else { dYCLJG = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSCLHQ_WSJG"].ToString().Trim()); dYCGJG = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSCLHQ_WSCGJG"].ToString().Trim()); } dYZZSL = CMISproConvert.StrToFloat(ds.Tables[0].Rows[0]["XLXSBJCL_ZZSL"].ToString().Trim()); } } } } private void ExcelColumnValid(DataSet ds) { Dictionary ColumnNames = new Dictionary(); ColumnNames.Add("0", "材料编码"); ColumnNames.Add("1", "材料名称"); string sBJU013 = GetOption("BJU013").Trim(); if (sBJU013.Equals("0")) { ColumnNames.Add("2", "材料价格"); ColumnNames.Add("3", "采购价格"); ColumnNames.Add("4", "加工费"); } else if (sBJU013.Equals("1")) { ColumnNames.Add("2", "材料价格"); ColumnNames.Add("3", "加工费"); } else if (sBJU013.Equals("2")) { ColumnNames.Add("2", "采购价格"); ColumnNames.Add("3", "加工费"); } for (int i = 0; i < ColumnNames.Count; i++) { try { if (i > 1) { if (!ds.Tables[0].Columns[i].ColumnName.Trim().Contains(ColumnNames[i.ToString()].Trim())) { throw new Exception("栏目[" + ds.Tables[0].Columns[i].ColumnName + "]与导入文件要求的栏目格式不一致!"); } } else { if (!ds.Tables[0].Columns[i].ColumnName.Trim().Equals(ColumnNames[i.ToString()].Trim())) { throw new Exception("栏目[" + ds.Tables[0].Columns[i].ColumnName + "]与导入文件要求的栏目格式不一致!"); } } } catch (Exception ex) { throw new Exception(ex.Message); } } } private void ReadWJ(string sPath, ref DataSet aDataExcel) { string sMessage = ""; aDataExcel = TExcelData.ReadExcel(sPath.Trim(), "", "", false, ref sMessage); if (!sMessage.Trim().Equals("")) { throw new Exception("文件读取失败!具体原因:" + sMessage); } } private string sGetCellTest(DataRow Row, int ColumnIndex) { return Row[ColumnIndex].ToString().Trim().Replace("\r\n", "").Replace("\n", ""); } private void InitControls() { chkJGHS.Checked = true; int iXSWS=XLBJDUtils.BJCLPriceDecimal; string sXSWS = NumToChinese(iXSWS); string sBJU013 = GetOption("BJU013").Trim(); if (sBJU013.Equals("0")) { lblLMYC.Text = "Excel栏目依次为:材料编码、材料名称、材料价格(元/Kg)、采购价格(元/Kg)、加工费(元/Kg)"; lblSM.Text = string.Format(@"1、导入有效期始以当前日期为准。材料价格,采购价格和加工费都为0的不进行更新。
2、加工料:导入后仅更新加工费,如存在材料价格或采购价格,则跳过。
3、非加工料:导入后仅更新材料价格和采购价格。
4、税率依照报价材料税率计算。
5、如果报价材料是加工原料,则会重算加工料的材料价格和采购价格。
6、如果报价材料的加工料存在物料行情,则会更新物料价格。
7、价格仅支持{0}位小数,多出的位数会被忽略。
8、停用的报价材料会被跳过。", sXSWS); } else if (sBJU013.Equals("1")) { lblLMYC.Text = "Excel栏目依次为:材料编码、材料名称、材料价格(元/Kg),加工费(元/Kg)"; lblSM.Text = string.Format(@"1、导入有效期始以当前日期为准。材料价格,采购价格和加工费都为0的不进行更新。
2、加工料:导入后仅更新加工费,如存在材料价格或采购价格,则跳过。
3、非加工料:导入后仅更新非加工料的材料价格。
4、税率依照报价材料税率计算。
5、如果报价材料是加工原料,则会重算加工料的材料价格和采购价格。
6、如果报价材料的加工料存在物料行情,则会更新物料价格。
7、价格仅支持{0}位小数,多出的位数会被忽略。
8、停用的报价材料会被跳过。", sXSWS); } else if (sBJU013.Equals("2")) { lblLMYC.Text = "Excel栏目依次为:材料编码、材料名称、采购价格(元/Kg),加工费(元/Kg)"; lblSM.Text = string.Format(@"1、导入有效期始以当前日期为准。材料价格,采购价格和加工费都为0的不进行更新。
2、加工料:导入后仅更新加工费,如存在材料价格或采购价格,则跳过。
3、非加工料:导入后仅支持更新采购价格。
4、税率依照报价材料税率计算。
5、如果报价材料是加工原料,则会重算加工料的材料价格和采购价格。
6、如果报价材料的加工料存在物料行情,则会更新物料价格。
7、价格仅支持{0}位小数,多出的位数会被忽略。
8、停用的报价材料会被跳过。", sXSWS); } } private string NumToChinese(int iXSWS) { switch (iXSWS) { case 0: return "零"; case 1: return "一"; case 2: return "二"; case 3: return "三"; case 4: return "四"; case 5: return "五"; case 6: return "六"; case 7: return "七"; case 8: return "八"; case 9: return "九"; case 10: return "十"; default: return iXSWS.ToString(); } } #endregion } }