电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

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

来源:金蝶云社区作者:金蝶2024-09-234

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

【应用场景】

采购价目表表体自定义基础资料字段和自定义辅助资料字段后,如何在工序转移单上自动匹配采购价目表


【注意事项】

该实现方案仅支持在工序转移单上匹配采购价目表


【实现步骤】

<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格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信