一种发票拆分方法及系统技术方案

技术编号:27617975 阅读:50 留言:0更新日期:2021-03-10 10:52
本发明专利技术公开了一种发票拆分方法及系统,本发明专利技术的方法包括以下步骤:获取待开票明细;根据待开票明细,确定待开票含税总金额M和最小开票数量n;根据待开票含税总金额M和最小开票数量n,计算单张发票最小开票金额m

【技术实现步骤摘要】
一种发票拆分方法及系统


[0001]本专利技术属于计算机
,具体涉及一种发票拆分方法及系统。

技术介绍

[0002]国家税务机关针对不同开票主体的经营规模,规定了不同发票类型的单张发票不含税金额上限,在实际开票操作中,通常按照国家税务机关规定对开票申请进行自动拆分。拆分的原则需要保证两个维度,即开票数量最小、金额数值准确。
[0003]现有技术的发票拆分方法包含以下几种:
[0004]一、开票时,简单地以发票金额上限为拆分标准
[0005]这种算法导致拆分后的个别发票金额相较其他发票金额差额非常大,例如:在税务机关备案的最大开票金额为1000元,则单张发票最大限额为999.99元,当需要开具1000元的发票时,则会按照999.99元+0.01元的组合拆分成两张发票,造成两者相差较大,商品的数量就会分别为0.99999和0.00001,拆分金额不合理。
[0006]二、专利CN 111144962 A所述方法
[0007]此种算法在多商品、多数量时,会出现不同发票间,商品单价不一致的情况,不够准确。
[0008]三、专利CN 107833081 A所述方法
[0009]假定开票单张限额999.99,商品数量为1,商品单价1999.98,则根据其说明书描述,n大于等于2,单张发票含税均值为1999.98/2=999.99,根据其权利要求3中第一段的描述,若所述单张发票含税均值不为整数,则将所述单张发票含税均值的整数部分的最高位的值加1,并将所述整数部分的其他位的值设为0,得到第一发票含税金额为1000元,超出了999.99元限额,显然不正确。

技术实现思路

[0010]为了解决现有的发票拆分技术存在的拆分不合理、分配不正确的问题,本专利技术提供了一种新的发票拆分方法。
[0011]本专利技术通过下述技术方案实现:
[0012]一种发票拆分方法及系统,该方法包括以下步骤:
[0013]步骤一、获取待开票明细;
[0014]步骤二、根据待开票明细,确定待开票含税总金额M和最小开票数量n;
[0015]步骤三、根据待开票含税总金额M和最小开票数量n,计算单张发票最小开票金额m
min

[0016]步骤四、根据最小开票金额m
min
,逐位取整,得到第一单张开票含税金额m
frist

[0017]步骤五、按照各商品含税总价,从大到小依次进行排序,即可得到一个待开票明细队列m0,m1,

,m
Pnum
,其中,P
num
为商品种类数量且P
num
大于1,对待开票明细队列开票。
[0018]优选的,本专利技术的步骤一获得的待开票明细包括商品的税率v、含税单价m
pi
和商品
数量q
pi

[0019]优选的,本专利技术的步骤二具体为:
[0020]若一共有j种商品,则:
[0021][0022]n=[M
÷
m
max
][0023]其中,m
pi
表示含税单价,q
pi
表示商品数量,m
max
表示预设的单张发票限额,[*]表示向上取整。
[0024]优选的,本专利技术的步骤三通过下式计算得到单张发票最小开票金额:
[0025]m
min
=M
÷
n。
[0026][0027]优选的,本专利技术的步骤四具体包括:
[0028]步骤4.1,m
frist
=round(m
min
,scale,Round.up),即按照scale精度位数进行向上进位;
[0029]步骤4.2,如果m
first
≤m
max
,则m
min
=m
first
,转到步骤4.4;
[0030]步骤4.3,如果m
first
>m
max
,则scale=scale+1,即精度增加一位有效数字后,再次向上进位,重复4.1

4.3的步骤;
[0031]步骤4.4,则确定需要开具n

1张含税金额为m
min
的发票,开具1张含税金额为第二开票金额m
second
=M

m
min
×
(n

1)的发票。
[0032]优选的,本专利技术的步骤五中各商品含税总价为含税单价与商品数量之积。
[0033]优选的,本专利技术的步骤五中对待开票明细队列开票具体包括:
[0034]步骤5.1,令m
sum
=m0,即取第一个明细,如果m
sum
≤m
min
,跳转步骤5.3,否则跳转步骤5.2;
[0035]步骤5.2,如果Δm
sum
=m
sum

m
min
>0.01且Δm
sum
÷
m
i
>0.01,即超出部分多于0.01元且明细数量占比超过0.01,则跳转步骤5.4,否则跳转步骤5.5;
[0036]步骤5.3,令m
sum
=m
sum
+m
i+1
,如果m
sum
≤m
min
且待开票明细队列为空,则按照m
sum
直接开票,并结束开票,如果m
sum
≤m
min
且待开票明细队列不为空,则重复步骤5.3,如果m
sum
>m
min
则跳转步骤5.2;
[0037]步骤5.4,按照m
min
开具一张发票,且将Δm
sum
放在剩余开票明细的队首,重复5.1

5.2的步骤;
[0038]步骤5.5,该张发票保留第i个商品金额中的m
i

m
i
×
0.01,同时从第i+1个商品金额中取Δm
sum
等值金额,放入该张发票,从而按照m
min
开具一张发票,并且将第i个商品的m
i
×
0.01放在剩余开票明细的队首,将第i+1个商品的m
i+1

Δm
sum
放在开票明细队列第二位置,重复5.1

5.5的步骤。
[0039]优选的,本专利技术的方法还包括:
[0040]步骤六、令任意一张发票第i条商品明细的金额为m
di
,其中开票明细数量q...

【技术保护点】

【技术特征摘要】
1.一种发票拆分方法,其特征在于,该方法包括以下步骤:步骤一、获取待开票明细;步骤二、根据待开票明细,确定最小开票数量n;步骤三、根据待开票含税总金额M和最小开票数量n,计算单张发票最小开票金额m
min
;步骤四、根据最小开票金额m
min
,逐位取整,得到第一单张开票含税金额m
frist
;步骤五、按照各商品含税总价,从大到小依次进行排序,即可得到一个待开票明细队列m0,m1,

,m
Pnum
,其中,P
num
为商品种类数量且P
num
大于1,对待开票明细队列开票。2.根据权利要求1所述的一种发票拆分方法,其特征在于,所述步骤一获得的待开票明细包括商品的税率v、含税单价m
pi
和商品数量q
pi
。3.根据权利要求1所述的一种发票拆分方法,其特征在于,所述步骤二具体为:若一共有j种商品,则:n=[M
÷
m
max
]其中,m
pi
表示含税单价,q
pi
表示商品数量,m
max
表示预设的单张发票限额,[*]表示向上取整。4.根据权利要求1所述的一种发票拆分方法,其特征在于,所述步骤三通过下式计算得到单张发票最小开票金额:m
min
=M
÷
n。5.根据权利要求1所述的一种发票拆分方法,其特征在于,所述步骤四具体包括:步骤4.1,m
frist
=round(m
min
,scale,Round.up),即按照scale精度位数进行向上进位;步骤4.2,如果m
first
≤m
max
,则m
min
=m
first
,转到步骤4.4;步骤4.3,如果m
first
>m
max
,则scale=scale+1,即精度增加一位有效数字后,再次向上进位,重复4.1

4.3的步骤;步骤4.4,则确定需要开具n

1张含税金额为m
min
的发票,开具1张含税金额为第二开票金额m
second
=M

m
min
×
(n

1)的发票。6.根据权利要求1所述的一种发票拆分方法,其特征在于,所述步骤五中各商品含税总价为含税单价与商品数量之积。7.根据权利要求6所述的一种发票拆分方法,其特征在于,所述步骤五中对待开票明细队列开票具体包括:步骤5.1,令m
sum
=m0,即取第一个明细,如果m
sum
≤m
min
,跳转步骤5.3,否则跳转步骤5.2;步骤5.2,如果Δm
sum
=m
...

【专利技术属性】
技术研发人员:柳春青李汶隆刘文新张亮严义兵徐海滨
申请(专利权)人:四川科瑞软件有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1