二开案例.表达式函数.金额转大写函数
【应用场景】将数字格式的金额转换成指定格式的字符串,例如,将数字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
二开案例.表达式函数.金额转大写函数
本文2024-09-23 04:20:39发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164698.html
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf