lsr314 发表于 2020-5-7 09:53:30

对账问题

本帖最后由 lsr314 于 2020-5-7 09:55 编辑

假设公司与某客户长期保持贸易合作,每个月销售几十笔商品,客户陆陆续续支付货款,有这么几种付款方式:
1、单次付款金额刚好是某一次销售商品的金额,即一对一的关系,这种情况是大多数,约占三分之一左右;
2、单次付款的金额是若干次销售商品的金额之和,即一对多的关系,一般是1对2,也有可能1对10,等等;
3、若干次付款的总金额刚好是某一次销售商品的金额,即多对一的关系,比如先付一部分,再付尾款;
4、若干次付款的总金额,刚好是若干次销售商品的总金额,即多对多的关系。
假设客户总共销售大约500-1000笔,收款300-600笔,现在公司账上客户所欠款项余额为A,需要找出是哪些货款没付。
我的思路:
1、对于第一种,可以用Excel自带的排序或者COUNTIF等函数直接列出来,删除以后,剩下的都是2、3、4这些情况。
2、解决第一种情况以后,剩下的用穷举的方式先找出1对2和2对1的,然后找出1对3和3对1的,最后解决其他情况。
这种方法有可能产生一个问题,比如客户某次支付了100元,有好几种情况与之对应:30+70、40+60、10+25+65,等等,如果选择了其中一种,就有可能影响接下来的核对。
我上传一个案例,大家看看有没有比较好的办法。

话说想发悬赏的,找不到悬赏在哪设置。

灵树 发表于 2020-5-7 15:13:05

真正的会计都不这么记帐,都是按先进先出或指定支付的哪一笔款项。

lsr314 发表于 2020-5-7 19:04:03

灵树 发表于 2020-5-7 15:13
真正的会计都不这么记帐,都是按先进先出或指定支付的哪一笔款项。

公司是收款方,不是付钱的一方,所以没办法知道对方付的是哪一笔(除非你找出对应的,这就是本帖的目的),让对方提供也不现实

灵树 发表于 2020-5-10 20:34:39

所以要先进先出,你还是没弄明白我说的“先进先出”的意思。如果对方不是一对一付款,就要按先进先出原则,月底结算支付了多少,剩余多少未付,结转到下月即可。

lsr314 发表于 2020-5-12 09:27:17

灵树 发表于 2020-5-10 20:34
所以要先进先出,你还是没弄明白我说的“先进先出”的意思。如果对方不是一对一付款,就要按先进先出原则, ...

你说的我明白,问题是现在要向客户催款。客户跟你说,你把没付的清单列出来,把发票找出来,不然我也不知道哪些付了哪些没付。先进先出只是有个余额,两边余额不一致的时候,不可能按照余额给你付款的。事实上现在就是两边余额不一致,而且差别还不小。

灵树 发表于 2020-5-12 17:07:28

呵呵,这个就是会计在入帐的时候没有做一对一付款入帐的问题,这样的话你按数值对应也有问题,必须是要和发票一一对应,要不你客户会说某一笔钱款以经打过了,有发票为证。可能损失就大了。

lsr314 发表于 2020-5-12 19:13:57

灵树 发表于 2020-5-12 17:07
呵呵,这个就是会计在入帐的时候没有做一对一付款入帐的问题,这样的话你按数值对应也有问题,必须是要和发 ...

这个帖子的目的是找出一个算法,解决对应的问题,不是互相扯皮的问题,双方都是善意的,只是时间长了笔数一多搞不清楚哪些付了哪些没付,你说其他的对解决问题没有帮助

lsr314 发表于 2020-5-12 19:17:06

同一个集团的兄弟单位,找出对方没付的发票对方才能走erp付款流程,对方也不是想赖账,只是确实不知道哪些没付

aimisiyou 发表于 2020-5-12 20:20:03

有点类似完美匹配问题。

灵树 发表于 2020-5-13 09:09:35

不考虑人为因素情况下,可以写一个两路比较小程序,用两个数组按时间顺序保存双方的款额,按1-4的情况顺序查询,找到对应关系的输出,并从原数组中删除这些元素然后再从头开始比较,这样解决可行。
页: [1]
查看完整版本: 对账问题