控制会员可兑换金额

简介: 控制会员可兑换金额
背景:新增单据店面输入抵用金额会有错误;
目的:防止输入金额大于会员的可兑换金额;


实现效果图:

开发精华代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.Validation;
using System.ComponentModel;
using Kingdee.BOS;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.SqlBuilder;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.App.Data;
namespace YaTi.K3.SCM.Sal.App.ServicePlugIn.Lskd
{
[Description("控制抵用金额")]
public class KdconAmouofoffset : AbstractOperationServicePlugIn
{
/// <summary>
/// 加载字段,在校验器中使用到的字段都应加载,防止列表与单据内操作异常发生;
/// </summary>
/// <param name="e"></param>
public override void OnPreparePropertys(PreparePropertysEventArgs e)
{
base.OnPreparePropertys(e);
e.FieldKeys.Add("FTHEAMOUNTOF");
e.FieldKeys.Add("FBillTypeID");
e.FieldKeys.Add("F_PBKA_Phone");
}
/// <summary>
/// 添加校验器
/// </summary>
/// <param name="e"></param>
public override void OnAddValidators(AddValidatorsEventArgs e)
{
base.OnAddValidators(e);
var operValidator = new OperValidator();//实例化类;
operValidator.AlwaysValidate = true;
operValidator.EntityKey = "FBillHead";
e.Validators.Add(operValidator);
}

  /// <summary>

        /// 当前操作的校验器

        /// </summary>

        private class OperValidator : AbstractValidator

        {

            public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx)

            {

                if ((dataEntities != null) && (dataEntities.Length > 0))

                {

                    foreach (Kingdee.BOS.Core.ExtendedDataEntity entity in dataEntities)

                    {

                        DynamicObject dataEntity = entity.DataEntity;

                        decimal Amount = Convert.ToDecimal(dataEntity["FTHEAMOUNTOF"]);//单据积分抵用金额;

                        string Fbilltypeid = dataEntity["FBillTypeID_Id"].ToString();//单据类型id;

                        string Ftelphone = dataEntity["F_PBKA_Phone"]==null?"" : dataEntity["F_PBKA_Phone"].ToString();

                     

                        if (Amount > 0)

                        {


                            if (Fbilltypeid == "57faf492b10d31" && Ftelphone != ""&& dataEntity["BillNo"].ToString().IndexOf("LSD") > -1 )//57faf492b10d31标识单据是标准零售单,顾客电话不为空;

                            {

                                if (Getdnyn(Ftelphone).Count() <= 0)

                                {

                                    ValidationErrorInfo info = new ValidationErrorInfo("F_PBKA_Phone", dataEntity["Id"].ToString(), entity.DataEntityIndex, entity.RowIndex, "OperatorPolicy", "顾客手机号不存在会员档案中,请修改正确!", "手机号", Kingdee.BOS.Core.Validation.ErrorLevel.Error);

                                    validateContext.AddError(dataEntity, info);

                                }

                                else

                                if (Amount > Getkdhamount(Ftelphone))

                                {

                                    ValidationErrorInfo info = new ValidationErrorInfo("FTHEAMOUNTOF", dataEntity["Id"].ToString(), entity.DataEntityIndex, entity.RowIndex, "OperatorPolicy", "输入的抵用金额过大,请修改正确!", "抵用金额", Kingdee.BOS.Core.Validation.ErrorLevel.Error);

                                    validateContext.AddError(dataEntity, info);

                                }



                            }


                         

                        }

                    }

                }

            }

希望跟大家一起讨论学习:QQ721325066
目录
相关文章
支付系统43-----支付宝支付-统一收单退款,全额退款这里可以发起一笔或者两笔订单
支付系统43-----支付宝支付-统一收单退款,全额退款这里可以发起一笔或者两笔订单
|
4月前
|
前端开发
支付系统44----支付宝支付-退款查询
支付系统44----支付宝支付-退款查询
支付系统44----支付宝支付-退款查询
|
6月前
|
移动开发 JavaScript 前端开发
会员管理系统H5-01会员开卡
会员管理系统H5-01会员开卡
|
6月前
|
开发者
【公告】2021-2022年未兑换积分即将过期,用户等级权益调整
社区用户2021-2022年未兑换积分将于2024年2月29日过期,同时用户等级权益内容将进行调整。
1948 11
|
JavaScript 前端开发 容器
会员管理系统H5-02会员充值
会员管理系统H5-02会员充值
机房重构之充值和显示金额
机房重构之充值和显示金额
65 0
|
消息中间件 算法 Java
创建支付订单实现|学习笔记
快速学习创建支付订单实现
127 0
创建支付订单实现|学习笔记
|
JavaScript 前端开发
使用 JavaScript 根据消费金额和消费者是否为会员确定折扣,最终核算实际应该支付的金额
使用 JavaScript 根据消费金额和消费者是否为会员确定折扣,最终核算实际应该支付的金额
460 0
使用 JavaScript 根据消费金额和消费者是否为会员确定折扣,最终核算实际应该支付的金额
|
存储 运维 NoSQL
为什么订单场景大家都使用这个产品?
# 前言 订单场景是商业公司中最核心的场景之一,具体如购物订单、外卖订单、交易流水、设备信息等等。 技术负责人在进行订单场景技术选型时候需要在各个维度进行架构决策,会对成本、性能、规模、运维、研发效率、扩展性等各个方面进行综合考虑和取舍。 根据接入我们产品的用户经验来看,在业务初期数据规模较小,基本上 MySQL 类产品能够通吃所有需求,很少遇到瓶颈或问题。随着业务规模增长,会有越来越多的问题暴
253 0
|
Android开发 iOS开发
请不要再为优爱腾充值会员!
闲暇时间,看看电影、听听音乐,是很多同学都会选择的娱乐方式。
请不要再为优爱腾充值会员!