工序转移单上通过采购价目表表体自定义基础资料字段和自定义辅助资料字段来自动匹配和获取采购价目表
【应用场景】
采购价目表表体自定义基础资料字段和自定义辅助资料字段后,如何在工序转移单上自动匹配采购价目表
【注意事项】
该实现方案仅支持在工序转移单上匹配采购价目表
【实现步骤】
<1>首先需要在BOSIDE上维护好采购价目表上维护基础资料的类型或者是辅助资料的类型。
<2>采购价目表上维护好新增的基础资料的信息,用于后面匹配采购价目表的条件。
<3>还需要通过BOSIDE二开一下工序转移单,新增一个基础资料,基础资料的类型是采购价目表上的类型。
<4>注册自定义的表单插件,该插件继承自OperationTransferEdit,需要扩展1个方法:DataChanged,参考代码如下:
/// <summary> /// 当字段数据变化触发 /// </summary> /// <param name="e"></param> public override void DataChanged(DataChangedEventArgs e) { base.DataChanged(e); switch (e.Field.Key) { case "FBase": this.BaseDataChanged(e); break; default: break; } }
private void BaseDataChanged(DataChangedEventArgs e) { DynamicObject outSrcData = null; var product = this.Model.GetValue<DynamicObject>(CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FProductId); if (product == null) throw new ArgumentNullException("KEY_FProductId"); long msterId = Convert.ToInt64(product["msterID"]); // 加工组织 long processOrgId = this.Model.GetValue<long>(CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FInProOrgId, e.Row); // 作业 long processMasterId = 0; if ( this.Model.GetValue<DynamicObject>(CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FInProcessId, e.Row) != null) { processMasterId = Convert.ToInt64( this.Model.GetValue<DynamicObject>( CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FInProcessId, e.Row)["msterID"]); } //计价单位 long valUnitId = this.Model.GetValue<long>(CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FSendValuationUnitId, e.Row); //供应商 long supplierMasterId = 0; if ( this.Model.GetValue<DynamicObject>(CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FInSupplier, e.Row) != null) { supplierMasterId = Convert.ToInt64( this.Model.GetValue<DynamicObject>(CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FInSupplier, e.Row)["msterID"]); } //采购组织 long purOrgId = this.Model.GetValue<long>(CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FInPurOrgId, e.Row); // 辅助属性id long auxiliaryId = Convert.ToInt64(this.Model.DataObject["ProAuxPropId_Id"]); DynamicObject auxiliary = this.Model.DataObject["ProAuxPropId"] as DynamicObject; //计价数量 DynamicObject opt = GetOpt(); decimal valQty = Convert.ToDecimal(opt["ValuationQty"]); DynamicObjectCollection dy = product["MaterialAuxPty"] as DynamicObjectCollection; //获取影响价格的辅助属性维度 string[] auxPropIds = (from s in dy where Convert.ToBoolean(s["IsAffectPrice"]) == true select s["AuxPropertyId_Id"].ToString()).ToArray(); //工序转移单创建的时间 DateTime transDateCreateTime = Convert.ToDateTime(this.View.Model.GetValue(CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FBillDate)); //币别 long outSrcCurrency = Convert.ToInt64(opt["OutSrcCurrency_Id"]); //二开新增的字段在这边获取一下 long baseTestId = this.Model.GetValue<long>("FBase", e.Row); string sqlStr = string.Format(GetPriceDataFilterBySupplier(), Convert.ToDateTime(opt["OperPlanStartTime"]), msterId, processMasterId, valQty, 5, supplierMasterId, purOrgId, processOrgId, valUnitId, transDateCreateTime, outSrcCurrency, baseTestId); DynamicObjectCollection results = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlStr); if (auxPropIds.Length > 0 && results.Count > 0) { foreach (var Tempresult in results) { if (OperationPlanning4TransferServiceHelper.CheckAuxProp(this.Context, auxiliary, product, Convert.ToInt64(Tempresult["FAUXPROPID"]))) { outSrcData = Tempresult; } } } else { if (results.Count > 0) //原则是有供应商的取有供应商的采购价目表 { outSrcData = results[0]; } } if (outSrcData != null) { // supplierByPriceList = true; this.Model.SetValue("FPriceList", outSrcData["FID"], e.Row); } //else //{ // this.View.Model.SetItemValueByID("FPriceList", null, e.Row); // // 清除价格信息,由于手动清除采购价目表时并不清除价格信息,所以将清除代码放在供应商清除方法里,而不是放在采购价目表的清除方法里 // ClearPriceInfo(e.Row); //} TaxRateBySupplierDataChanged(e); }
/// <summary> /// 获取根据供应商查询采购价目表的sql(同时查询供应商为空的采购价目表) /// </summary> /// <returns></returns> private string GetPriceDataFilterBySupplier() { return @"SELECT T0.FPRICE , T0.FTAXPRICE , T0.FPUBLICWASTEPRICE, T0.FPUBLICWASTETAXPRICE, T0.FWASTEPRICE, T0.FWASTETAXPRICE, T1.FCURRENCYID, T0.FUNITID, T0.FTAXRATE, T1.FID, T0.FAUXPROPID FROM T_PUR_PRICELISTENTRY T0 INNER JOIN T_PUR_PRICELIST T1 ON T0.FID=T1.FID JOIN T_BD_UNIT U ON U.FUNITID=T0.FUNITID JOIN T_BD_UNITCONVERTRATE UR ON UR.FCURRENTUNITID=U.FUNITID JOIN T_BD_MATERIAL M ON M.FMATERIALID=T0.FMATERIALID WHERE T1.FDOCUMENTSTATUS='C' AND T1.FFORBIDSTATUS='A' AND t1.FFORBIDSTATUS='A' AND t0.FDISABLESTATUS='B' AND T0.FDISABLESTATUS='B' AND (T0.FEFFECTIVEDATE<={{ts '{0}'}} OR T0.FEFFECTIVEDATE<={{ts '{9}'}}) AND T0.FEXPIRYDATE>={{ts '{0}'}} AND U.FDOCUMENTSTATUS='C' AND U.FFORBIDSTATUS='A' AND T0.FPRICE>0 AND M.FMASTERID={1} AND (T0.FProcessId in (select A.Fid from T_ENG_PROCESS A where A.fmasterid={2} ) ) AND (T0.FTOQTY*UR.FCONVERTNUMERATOR/UR.FCONVERTDENOMINATOR>={3} OR T0.FTOQTY=0) AND T1.FPRICETYPE='{4}' AND ( ( T1.FSUPPLIERID in (select S.fsupplierid from t_bd_supplier S where S.fmasterid={5} )) or T1.FSUPPLIERID=0 ) AND T1.FCREATEORGID={6} AND T0.FPROCESSORGID={7} AND T0.FUnitId={8} AND T0.FROWAUDITSTATUS = 'A' AND T1.FCURRENCYID={10} AND T0.FDEFBASEDATAO={11} GROUP BY T1.FID,T0.FENTRYID,T0.FTOQTY,T0.FPRICE,T0.FTAXPRICE,T0.FPUBLICWASTEPRICE,T0.FPUBLICWASTETAXPRICE,T0.FWASTEPRICE,T0.FWASTETAXPRICE,T0.FUNITID,T0.FTAXRATE,T1.FCURRENCYID,T0.FEFFECTIVEDATE,T1.FSUPPLIERID,T0.FAUXPROPID,T0.FDEFBASEDATAO ORDER BY T0.FTOQTY ASC,T0.FEFFECTIVEDATE DESC,T1.FSUPPLIERID DESC "; } /// <summary> /// 获得工序 /// </summary> /// <returns></returns> private DynamicObject GetOpt() { long inOperId = this.Model.GetValue<long>(CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FInOperId); DynamicObject opt = OperationPlanning4TransferServiceHelper.GetOperData(this.Context, inOperId); return opt; }
/// <summary> /// 供应商变化后, 赋值税率 /// </summary> /// <param name="e"></param> private void TaxRateBySupplierDataChanged(DataChangedEventArgs e) { //供应商为空 if (e.NewValue == null || string.IsNullOrEmpty(e.NewValue.ToString()) || "0".Equals(e.NewValue.ToString())) { this.Model.SetValue(CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FSendTaxRate, 0, e.Row); } else if (this.Model.GetValue<decimal>(CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FSendTaxRate, e.Row) == decimal.Zero) // 供应商不为空,且税率为空 { // 税率=供应商.默认税率.税率 FormMetadata metadata = MetaDataServiceHelper.Load(this.Context, "BD_Supplier") as FormMetadata; DynamicObject supplierInfo = BusinessDataServiceHelper.LoadSingle(this.Context, e.NewValue, metadata.BusinessInfo.GetDynamicObjectType()); DynamicObject supplierFinance = supplierInfo.GetDynamicObjectItemValue<DynamicObjectCollection>("SupplierFinance").FirstOrDefault(); DynamicObject taxRateId = supplierFinance.GetDynamicObjectItemValue<DynamicObject>("TaxRateId"); if (taxRateId != null) { decimal taxRate = taxRateId.GetDynamicObjectItemValue<decimal>("TaxRate"); this.Model.SetValue(CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FSendTaxRate, taxRate, e.Row); decimal tempQulityPrice = this.Model.GetValue<decimal>( CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FSendQualifiedTaxPrice, e.Row); decimal quliytPrice = tempQulityPrice / (1 + taxRate / 100); this.Model.SetValue(CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FSendQualifiedPrice, quliytPrice, e.Row); decimal tempFailPrice = this.Model.GetValue<decimal>( CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FSendProFailTaxPrice, e.Row); decimal failPrice = tempFailPrice / (1 + tempFailPrice / 100); this.Model.SetValue(CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FSendProFailPrice, failPrice, e.Row); decimal tempMatFailPrice = this.Model.GetValue<decimal>( CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FSendMatFailTaxPrice, e.Row); decimal matFailPrice = tempMatFailPrice / (1 + tempMatFailPrice / 100); this.Model.SetValue(CONST_SFC_OperationTransfer.CONST_FBillHead.KEY_FSendMatFailPrice, matFailPrice, e.Row); } } }
<4>注册表单插件,保存元数据,开发完毕。
【参考资料】
【二开案例.基础资料.联动查询(GetValue)】
https://vip.kingdee.com/article/127710528226504960
【金蝶云星空BOS二次开发案例演示】
https://vip.kingdee.com/article/94751030918525696
工序转移单上通过采购价目表表体自定义基础资料字段和自定义辅助资料字段来自动匹配和获取采购价目表
【应用场景】采购价目表表体自定义基础资料字段和自定义辅助资料字段后,如何在工序转移单上自动匹配采购价目表【注意事项】该实现方案仅支...
点击下载文档
本文2024-09-23 03:26:11发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-158843.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf
热门文章