工序转移单上通过采购价目表表体自定义基础资料字段和自定义辅助资料字段来自动匹配和获取采购价目表

【应用场景】
采购价目表表体自定义基础资料字段和自定义辅助资料字段后,如何在工序转移单上自动匹配采购价目表
【注意事项】
该实现方案仅支持在工序转移单上匹配采购价目表
【实现步骤】
<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.FT工序转移单上通过采购价目表表体自定义基础资料字段和自定义辅助资料字段来自动匹配和获取采购价目表
【应用场景】采购价目表表体自定义基础资料字段和自定义辅助资料字段后,如何在工序转移单上自动匹配采购价目表【注意事项】该实现方案仅支...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



