Siebel计算列取余数问题

最近做一个需求,就是用户需要将新自定义3个column年月日,显示在Applet上面。这三个年月日分别绑定了3个picklist.

还有个需求(到写博客时间还没实现出来)就是需要判断闰年、平年2月份的时候,日期分别只显示29天、28天,,其他月份,大月份就显示31天,小月份就显示30天。


网上找了一些资料都没找到好的解决方案,于是我想到一个不是很好的办法去实现,就是用Toggle Applet。

Applet 1:年份选择平年2月的时候,日期显示28天

Applet 2:年份选择润年2月的时候,日期显示29天

Applet 3:年份选择4、6、9、11月的时候,日期显示30天

Applet 4:剩余的其他月份,日期显示31天


本来直接在BC上用个计算列,然后用Siebel 取余数的方法Clib.div(ToNumber(年份), ToNumber(月份)).rem,取得余数,然后作为Toggle Applet的条件。

但实际上Calculated Field不支持用这个取余数的方法Clib.div(ToNumber(年份), ToNumber(月份)).rem(试过%也不行,很奇怪,比如100%5 返回100。用除号却可以

比如100/5能正确返回20。这点我也很头晕)

以上方法不行,于是我只能用复杂点的方法了,就是计算列中调用BS。在BS中写脚本,脚本里面总是可以实现了吧。

BS计算列调用BS的语法如下:

InvokeServiceMethod("BS名字","BS的方法","参数1=eval([ASW Custom Birthday Year]),参数2=eval([ASW Custom Birthday Month])","返回值")



InvokeServiceMethod("ASW LOY Data Service","Get Remainder Data","sYear=eval([ASW Custom Birthday Year]),sMonth=eval([ASW Custom Birthday Month])","MyReturn")


在BS "ASW LOY Data Service"的代码如下:


function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
{
if (MethodName == "Generate Random Number")
{
GenerateRandomNum(Inputs, Outputs);
return (CancelOperation);
}
else if (MethodName == "Get Remainder Data")
{
   GetRemainderData (Inputs, Outputs);
   return (CancelOperation);
}
return (ContinueOperation);
}

function GetRemainderData (Inputs, Outputs)
{
//TheApplication().TraceOn("D://Jason_Dormant.log", "Allocation", "All");
//TheApplication().TraceOn("D://Jason_Dormant.log", "SQL", "");
var nYear = Inputs.GetProperty("sYear");
var nMonth = Inputs.GetProperty("sMonth");
var days = 30;//default show 30 days


    //TheApplication().Trace("Year =  " + sYear);


//var sResult = Clib.div(ToNumber(nYear), ToNumber(nMonth)).rem;
//Outputs.SetProperty("MyReturn", sResult);
//TheApplication().TraceOff();
//leap year
if(nMonth ==1 || nMonth ==3 || nMonth ==5 || nMonth ==7 || nMonth ==8 || nMonth ==10 || nMonth ==12)
{
days = 31;
}
else if(nMonth ==2)
{
if ((nYear%4==0 && nYear%100!=0) || nYear%400==0)
{
days = 29;
}
else
{
days = 28;
}
}
else
{
days = 30;
}
Outputs.SetProperty("MyReturn", days);
}



然而,现在又遇到新的问题,就是在BC 里面,一个COLUMN只能绑定一个picklist。所以我的需求,日期column需要绑定4个不同的picklist分别用来显示28、29、30、31天不知道怎么实现了。

本来还想再新建多4个BC,但是问题又来了,新建的BC跟Toggle Applet的基Applet对应的BC不一样,又报新的错误了。这次的Task真的让我头疼,让我深深体会到,旧的问题没解决,新的问题又产生这种困惑。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值