Exemplo n.º 1
0
        public override void DataChanged(DataChangedEventArgs e)
        {
            base.DataChanged(e);
            String key = e.Field.Key.ToUpperInvariant();
            long   custId;
            long   orgid;

            //实发数量发生变化,判断是否是赠品,如果是赠品取赠品价格
            if (key == "FREALQTY" && Convert.ToInt32(e.NewValue) != 0)
            {
                DynamicObject SalOrg     = this.Model.GetValue("FSALEORGID") as DynamicObject;
                DynamicObject CustObject = this.Model.GetValue("FCustomerID") as DynamicObject;
                if (CustObject != null && SalOrg != null)
                {
                    custId = Convert.ToInt64(CustObject["id"]);
                    orgid  = Convert.ToInt64(SalOrg["id"]);
                }
                Dictionary <int, double> priceDictionary = TLMBServiceHelper.GetPriceDictionary(this.Context, Convert.ToDateTime(this.Model.GetValue("FDate")).ToShortDateString(), custId, orgid);
                if (this.Model.GetValue("FISTASTE", e.Row) != null && this.Model.GetValue("FISTASTE", e.Row).ToString() != "" && this.Model.GetValue("FISTASTE", e.Row).ToString() != " ")
                {
                    DynamicObject MaterObject1 = this.Model.GetValue("FMaterialId", e.Row) as DynamicObject;
                    int           FMaterialId  = Convert.ToInt32(MaterObject1["id"]);
                    double        price        = priceDictionary[FMaterialId];
                    this.Model.SetValue("FTAXPRICE", price, e.Row);
                    this.Model.SetValue("FPRICE", price / 1.16, e.Row);
                }
            }
        }
Exemplo n.º 2
0
 public override void EndOperationTransaction(EndOperationTransactionArgs e)
 {
     base.EndOperationTransaction(e);
     if (e.DataEntitys != null && e.DataEntitys.Count <DynamicObject>() > 0)
     {
         foreach (DynamicObject item in e.DataEntitys)
         {
             string   custId = Convert.ToString(item["FCUSTID_ID"]);
             string[] pkIds  = new string[] { custId };
             TLMBServiceHelper.SetState(this.Context, "BD_Customer", pkIds, "FCUSTID", "T_BD_CUSTOMER", "FForbidStatus", "B");
         }
     }
 }
        /// <summary>
        /// 主单据体的字段携带完毕,与源单的关联关系创建好之后,触发此事件
        /// </summary>
        /// <param name="e"></param>
        public override void OnAfterCreateLink(CreateLinkEventArgs e)
        {
            base.OnAfterCreateLink(e);
            //预先获取一些必要的元数据,后续代码要用到
            //源单第一单据体
            Entity srcFirstEntity = e.SourceBusinessInfo.GetEntity("FEntity");

            //目标单第一单据体
            Entity mainEntity = e.TargetBusinessInfo.GetEntity("FEntityDetail");


            // 目标单关联子单据体
            Entity linkEntity = null;
            Form   form       = e.TargetBusinessInfo.GetForm();

            if (form.LinkSet != null &&
                form.LinkSet.LinkEntitys != null &&
                form.LinkSet.LinkEntitys.Count != 0)
            {
                linkEntity = e.TargetBusinessInfo.GetEntity(
                    form.LinkSet.LinkEntitys[0].Key);
            }

            if (linkEntity == null)
            {
                return;
            }

            // 获取生成的全部下游单据
            ExtendedDataEntity[] billDataEntitys = e.TargetExtendedDataEntities.FindByEntityKey("FBillHead");

            // 对下游单据,逐张单据进行处理
            foreach (var item in billDataEntitys)
            {
                DynamicObject dataObject = item.DataEntity;

                // 定义一个集合,用于收集本单对应的源单内码
                HashSet <long> srcBillIds = new HashSet <long>();

                // 开始到主单据体中,读取关联的源单内码
                DynamicObjectCollection mainEntryRows =
                    mainEntity.DynamicProperty.GetValue(dataObject) as DynamicObjectCollection;
                DynamicObject           mainEntityRow = mainEntryRows[0];
                DynamicObjectCollection linkRows      =
                    linkEntity.DynamicProperty.GetValue(mainEntityRow) as DynamicObjectCollection;
                long srcBillId = Convert.ToInt64(linkRows[0]["SBillId"]);
                if (srcBillId != 0 &&
                    srcBillIds.Contains(srcBillId) == false)
                {
                    srcBillIds.Add(srcBillId);
                }
                if (srcBillIds.Count == 0)
                {
                    continue;
                }
                #region 隐藏
                //foreach (var mainEntityRow in mainEntryRows)
                //{
                //    DynamicObjectCollection linkRows =
                //        linkEntity.DynamicProperty.GetValue(mainEntityRow) as DynamicObjectCollection;
                //    foreach (var linkRow in linkRows)
                //    {
                //        long srcBillId = Convert.ToInt64(linkRow["SBillId"]);
                //        if (srcBillId != 0
                //            && srcBillIds.Contains(srcBillId) == false)
                //        {
                //            srcBillIds.Add(srcBillId);
                //        }
                //    }
                //}
                //if (srcBillIds.Count == 0)
                //{
                //    continue;
                //}
                #endregion

                // 开始加载源单第二单据体上的字段

                // 确定需要加载的源单字段(仅加载需要携带的字段)
                List <SelectorItemInfo> selector = new List <SelectorItemInfo>();
                selector.Add(new SelectorItemInfo("FDate"));       //日期
                selector.Add(new SelectorItemInfo("FCustomerID")); //客户
                selector.Add(new SelectorItemInfo("FSaleDeptID")); //销售部门
                selector.Add(new SelectorItemInfo("FMaterialID")); //物料
                selector.Add(new SelectorItemInfo("FTaxPrice"));   //含税单价
                // TODO: 继续添加其他需要携带的字段,示例代码略
                // 设置过滤条件
                string filter = string.Format(" {0} IN ({1}) ",
                                              e.SourceBusinessInfo.GetForm().PkFieldName,
                                              string.Join(",", srcBillIds));
                OQLFilter filterObj = OQLFilter.CreateHeadEntityFilter(filter);

                // 读取源单
                Kingdee.BOS.Contracts.IViewService viewService = Kingdee.BOS.App.ServiceHelper.GetService <Kingdee.BOS.Contracts.IViewService>();
                var srcBillObjs = viewService.Load(this.Context,
                                                   e.SourceBusinessInfo.GetForm().Id,
                                                   selector,
                                                   filterObj);
                #region 隐藏
                // 开始把源单单据体数据,填写到目标单上
                //DynamicObjectCollection secondEntryRows =
                //    secondEntity.DynamicProperty.GetValue(dataObject) as DynamicObjectCollection;
                //secondEntryRows.Clear();    // 删除空行
                #endregion

                foreach (DynamicObject srcBillObj in srcBillObjs)
                {
                    DynamicObject dept = srcBillObj["SaleDeptID"] as DynamicObject; //销售部门
                    DynamicObject Cust = srcBillObj["CustomerID"] as DynamicObject; //客户
                    //bool isRight = !Cust["FKHBD"].Equals("1") && !Cust["FKHBD"].Equals("2") ? Convert.ToInt32(Cust["FSAP"]) == 2 : Convert.ToInt32(Cust["FKHBD"]) == 1 ? true: Convert.ToInt32(Cust["FKHBD"]) == 2 ? true:false;
                    //补差、丢货或者客户结算方式是现金
                    bool isRight = (Cust["FKHBD"].Equals("1") || Cust["FKHBD"].Equals("2")) ? true : Convert.ToInt32(Cust["FSAP"]) == 2 ? true : false;
                    //if ((Convert.ToInt32(Cust["FSAP"]) == 2 || Convert.ToInt32(Cust["FKHBD"]) == 1 || Convert.ToInt32(Cust["FKHBD"]) == 2) && Convert.ToInt32(dept["FDEPTTYPE"]) == 4)

                    if (isRight && Convert.ToInt32(dept["FDEPTTYPE"]) == 4)//部门类别外埠
                    {
                        //外埠现金客户执行销售政策折扣
                        Dictionary <string, double> disCounts = TLMBServiceHelper.GetDiscounts(base.Context, Convert.ToInt64(dept["id"]), Convert.ToDateTime(srcBillObj["Date"]));
                        //遍历应收单,通过销售折扣计算折后的含税单价赋值。
                        foreach (DynamicObject mainEntryRow in mainEntryRows)
                        {
                            double discount = 0.0;
                            if (disCounts.TryGetValue(Convert.ToString(((DynamicObject)mainEntryRow["MATERIALID"])["FWLFL"]), out discount))
                            {
                                double ZK = Convert.ToDouble(disCounts["" + Convert.ToString(((DynamicObject)mainEntryRow["MATERIALID"])["FWLFL"]) + ""]);
                                mainEntryRow["TaxPrice"]        = Convert.ToDouble(mainEntryRow["TaxPrice"]) * ZK;
                                mainEntryRow["F_PAEZ_DisCount"] = ZK;
                            }
                        }
                    }

                    //DynamicObjectCollection srcEntryRows =
                    //    srcSecondEntity.DynamicProperty.GetValue(srcBillObj) as DynamicObjectCollection;

                    //foreach (var srcEntryRow in srcEntryRows)
                    //{
                    //    // 目标单添加新行,并接受源单字段值
                    //    DynamicObject newRow = new DynamicObject(secondEntity.DynamicObjectType);
                    //    secondEntryRows.Add(newRow);
                    //    // 填写字段值
                    //    newRow["F_JD_Text"] = srcEntryRow["F_JD_Text"];
                    //    // TODO: 逐个填写其他字段值,示例代码略
                    //}
                }
            }
        }