工资奖金的问题,asp高手请进!

cnpznet 2006-06-24 09:01:32
我在做的人力资源管理系统中,有个问题,求思路如何实现:

每位员工工资在每个月末都会计算出来一个值,每个员工都有一个累计总收入,,当这个月底的收入+累计收入如果达到6000元时,系统如何扣除这大于6000的奖金500元,还有就是再次达到6000时,如何再次扣除500元。

比如:(分析各种可能出现的情况)

员工A -> 这个月4000 -> 原来累计2500 ,这样合计累计6500, 系统要自动扣除这500元;那现在的累计员工A的工资就是6000了,因为500扣除了;

员工B -> 这个月800 ->原来累计5500 -> 合计6300,系统要扣下这300元,员工实得6000;如果下个月员工收入1000,,这个时候???因为系统要求是扣满500,上个月扣下300,所以这个月还要扣200,,所以员工C能得到800元。。。

员工C -> 这个月4000 -> 原来累计10000(已经扣过一次了),因为已经扣过一次了,需要拿10000-6000=4000 ,,所以这样合计是8000,但这时系统扣除500元,那现在的累计员工A的工资就是7500了,因为500扣除了;


这个问题把我搞晕了,请求高手解答,最好有源代码。





...全文
317 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
tatty_bad 2006-06-27
你这就是在自己做套自己钻...

不复杂的问题,被你想得这么复杂...

我管你每次发多少?只要累计的总和除以6500所得的整数大于已经发了的次数,那就要扣了500.想什么呢在..
回复
cnpznet 2006-06-27
总累计6000,就扣500,,总累计6000,就扣500,,

如果第一次发12000,累计为0,按照6000时停发的原则,扣500,实发6000+5500;

这时累计成了11500;(我感觉应该加个扣500的次数,这时扣的次数为1)

如果第二发3000,由于总累计是11500(这里已经有6000扣完500了,还剩5500,),按照6000时停发500的原则,由于原来5500,这时首先从3000里发500满足6000,,然后扣500,所以实际发的是2500,,;(这时扣的次数为2),,所以总累计里有(2个6000+2000)


我测试了无数次,感觉特别复杂,而且感觉每次发的工资不一样的时候,这种计算公式总是不准确??

郁闷!!!感觉楼上大侠答复。。

回复
tatty_bad 2006-06-26
呵呵,其实我觉得很简单哟。。

一个字段累计所有的发出来的工资,一个字段累计所有被扣款的次数。

好了,剩下来的,就是将全部的工资除以6500,得到多少,减去已经被扣款的次数,余整,超过1了,就扣。。。
回复
TaoTaoYou 2006-06-26
不管什么时候,只要工资字段超过6000就扣500,再用一个字段累扣发次数,没这么复杂吧老大?如果为6200 ,也就是说小于6500的时候你可以做个判断,,先扣出来,然后做个标记,下次再接着扣,,判断判断判断,,判断!
回复
dong127 2006-06-26
还有个问题没看出来,比如累计5000,这个月发了10000,那么会怎么扣?扣1次还是扣2次?
回复
babay2008 2006-06-26
不错,做系统
回复
starsword 2006-06-26
cnpznet(新华海电) ( ) 信誉:100 2006-6-25 12:46:47 得分: 0



当第一次到6000时,系统自动停发500元,如果扣完500后,再接着发,累计到第二个6000时,再自动停发500元,循环。。。

感谢楼上的答复。。我有点看不懂。。


____________________________________________________________________________

我写的就是你需要的了,你看不懂……
回复
starsword 2006-06-26
cnpznet(新华海电) ( ) 信誉:100 2006-6-25 12:46:47 得分: 0



当第一次到6000时,系统自动停发500元,如果扣完500后,再接着发,累计到第二个6000时,再自动停发500元,循环。。。

感谢楼上的答复。。我有点看不懂。。


____________________________________________________________________________

我写的就是你需要的了,你看不懂……
回复
dong127 2006-06-26
to tatty_bad

怎么看都是在6000外的嘛。
回复
tatty_bad 2006-06-26
很重要的一个问题:到了6000,扣500,这个500是6000内的,还是6000外的??
其实搞清楚了这问题,余下来的,就不复杂了。。
回复
cnpznet 2006-06-25
当第一次到6000时,系统自动停发500元,如果扣完500后,再接着发,累计到第二个6000时,再自动停发500元,循环。。。

感谢楼上的答复。。我有点看不懂。。
回复
cnpznet 2006-06-25
自己顶一下
回复
starsword 2006-06-24
刚才有点误解你的意思了,问一下

比如一个新员工,月薪4000
1、第一月发4000,第二个月发3500(工资次次发,每够一个6000扣500)
2、第一个月不发(没到6000,累计起来,到6000再发),第二个月发6000,欠1500,够下一个6000再一起发

看了你上面的描述,不知道你说的是哪种情况?我的是针对第一种情况的
回复
starsword 2006-06-24
你放两个字段,一个字段放未扣累计数,一个字段为未扣数,我看了你上面的意思,就是工资累计到6500就要扣除500,对吧?我讲一下这个两个字段的用途

未扣累计数X、未扣数Y,如员工A、B、C在发放本次工资前的X、Y为:

X Y
A 2500 0
B 5500 0
C 4000 0

各自本次预发工资设为Z,实发工资设为W,则发放本次工资后

if Z>0 then '发了工资啦

if Z-Y <= 0 then '发的还不够上次欠的

W = 0 '全给你扣了,不发了
Y = Y-Z '欠的少点儿了

else '还了欠的还有剩的

T = Z-Y+X '这是这次剩下的加上次累计的
T1 = INT(T/6500) '看你这次累计的有几个6500扣
T2 = T MOD 6500 '刨掉整6500的,零头还有多少?

if T2 >= 6000 then '如果零头还比6000多
W = (Z-Y) - T1 * 500 - (T2-6000) '实发工资
X = 0 '累计数清零
Y = 500 - (T2-6000) '欠的,这次记上
else '零头不够6000
W = (Z-Y) - T1 * 500 '实发工资
X = T2 '累计数记上,下次够了再扣
Y = 0 '不欠了
end if

end if

end if
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2006-06-24 09:01
社区公告
暂无公告