二开案例.表达式函数.金额转大写函数

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开案例.表达式函数.金额转大写函数

【应用场景】将数字格式的金额转换成指定格式的字符串,例如,将数字123转换成壹佰贰拾叁元整。

【演示案例】采购订单的单据头新增一个文本字段,用于保存和显示当前订单的金额的大写字符。

【实现步骤】

<1>编写函数,代码如下。

using Kingdee.BOS;

using Kingdee.BOS.Core.Metadata.Expression.FuncDefine;

using Kingdee.BOS.NumFormatTran;

using Kingdee.BOS.Util;

using System;


namespace Jac.XkDemo.BOS.Core.Functions

{

    /// <summary>

    /// 【函数】金额转大写函数

    /// </summary>

    [Serializable]

    public class AmountToUpperFuncDefine : AbstractFuncDefine

    {

        public AmountToUpperFuncDefine()

        {

        }


        public AmountToUpperFuncDefine(Context ctx, dynamic obj)

        {

            m_ctx = ctx;

            m_obj = obj;

        }


        public override IFuncDefine GetFunctionDefine(Context ctx, dynamic obj)

        {

            return new AmountToUpperFuncDefine(ctx, obj);

        }


        public override object GetFuncDefine()

        {

            return new Func<object, string, string>(FuncDefine);

        }


        /// <summary>

        /// 金额转大写

        /// </summary>

        /// <param name="value">数字</param>

        /// <param name="upperStlye">大写格式,取值范围请参考枚举类型UpperStyle</param>

        /// <returns>返回金额转大写后的字符串</returns>

        string FuncDefine(object value, string upperStlye)

        {

            if (value == null)

            {

                return "";

            }


            var tran = new FormatTranslate();

            tran.Resource = value.ToString();

            tran.Type = upperStlye;

            return FormatTranslateUtil.Translate(tran);

        }

    }

}




/*

/// <summary>

/// 金额大写样式

/// </summary>

public enum UpperStyle

{

    /// <summary>

    /// 中文人民币样式

    /// </summary>

    ChineseRmbStyle,


    /// <summary>

    /// 英文美元大写样式(美分)

    /// </summary>

    EnglishDollarStyle,


    /// <summary>

    /// 英文大写样式(美分)

    /// </summary>

    EnglishWithoutStyle,


    /// <summary>

    /// 中文人民币带整样式

    /// </summary>

    ChineseRmbZhengStyle,


    /// <summary>

    /// 中文人民币带整样式(圆)

    /// </summary>

    ChineseRmbZhengYuanStyle,


    /// <summary>

    /// 英文大写样式(美分2)

    /// </summary>

    EnglishUppercaseCentsStyle,


    /// <summary>

    /// 英文大写样式(元)

    /// </summary>

    EnglishUppercaseDollarsStyle,


    /// <summary>

    /// 英文大写样式(美点)

    /// </summary>

    EnglishUppercasePointStyle,


    /// <summary>

    /// 英文大写样式(分数)

    /// </summary>

    EnglishUppercaseFractionStyle

}

*/


<2>注册函数(可参考:https://vip.kingdee.com/article/74091717745675520)。

-- 注册金额转大写函数 

DELETE T_MDL_ELEMENTTYPE WHERE FID=888006;

INSERT INTO T_MDL_ELEMENTTYPE (FID,FIMGKEY,FTYPEID,FISVISIBLE,FELEMENTCLASS,FAPPEARANCECLASS)

VALUES (888006, '', 1, 0, 'Jac.XkDemo.BOS.Core.Functions.AmountToUpperFuncDefine,Jac.XkDemo.BOS.Core', 'BOS_AMOUNTTOUPPER');


DELETE T_MDL_DOMAINMODELELEMENTMAP WHERE FID=1200 and FELEMENTGROUPID=24 and FELEMENTTYPEID=888006;

INSERT INTO T_MDL_DOMAINMODELELEMENTMAP (FID, FENTRYID, FELEMENTTYPEID, FELEMENTGROUPID, FSEQ)

VALUES (1200, 888006, 888006, 24, 81);

 

DELETE T_MDL_ELEMENTTYPE_L WHERE FID=888006 AND FLOCALEID=2052;

INSERT INTO T_MDL_ELEMENTTYPE_L(FID,FNAME,FDESCRIPTION,FLOCALEID,FPKID) 

VALUES (888006,N'金额转大写',N'将数字格式的金额转换为大写字符,例如将数字123转换成壹佰贰拾叁元整。

使用示例:

金额转中文人民币带整样式:AMOUNTTOUPPER(FBillAmount,''ChineseRmbZhengStyle'')

金额转英文美元大写样式:AMOUNTTOUPPER(FBillAmount,''EnglishDollarStyle'');

',2052,(SELECT ISNULL(MAX(FPKID), 0) + 1 FROM T_MDL_ELEMENTTYPE_L WHERE FPKID > 100000)); 

---------------------------------------------------------------------------------------------------------


<3>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


<4>BOSIDE扩展采购订单,单据头新增文本字段【大写金额】,在单据头上新增实体服务规则,如下图所示,保存元数据,开发完毕。

前置条件:FBillAmount  <> null

计算公式:F_Jac_Text = AMOUNTTOUPPER(FBillAmount,'ChineseRmbZhengStyle')




现在可以登录业务站点,打开采购订单编辑界面,在订单明细中录入任意物料,采购数量,单价,检验一下新增的表达式函数的运行效果啦。
















【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

二开案例.表达式函数.金额转大写函数

【应用场景】将数字格式的金额转换成指定格式的字符串,例如,将数字123转换成壹佰贰拾叁元整。【演示案例】采购订单的单据头新增一个文本...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息