You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按日期设置GST税率:区分新旧发票(6月前6%/6月1日起0%)

解决发票税率区分新旧发票的问题

这问题我之前帮同行处理过类似的,核心问题就是你现在的判断逻辑完全没考虑发票的创建日期,只靠gst_total来判断,肯定会把旧发票的税率也改掉。要实现只给6月1日及以后的新发票用0%税率,必须把发票的原始创建日期作为核心判断条件。

核心思路

每个发票必须有一个存储其创建时间的字段(比如叫invoice_date),这是区分新旧发票的唯一可靠依据。然后通过这个日期和2024-06-01(注意年份要和你的实际业务对应)做对比,分别设置税率:

  • 6月1日及以后创建的发票:直接用0%税率
  • 6月1日之前创建的发票:保留原来的逻辑(有GST则6%,无则0%)

修改后的代码示例(基于你提供的VB风格语法)

' 第一步:获取当前发票的原始创建日期(从数据库/表单/存储介质中读取)
Dim invoiceCreateDate As Date
invoiceCreateDate = ' 替换成你实际获取发票日期的代码,比如 rs!invoice_date 或 form.invoice_date

' 第二步:根据日期判断税率
If invoiceCreateDate >= #6/1/2024# Then
    ' 新发票:税率设为0%
    tax_rate = 0
Else
    ' 旧发票:沿用原来的税率逻辑
    If gst_total > 0 Then
        tax_rate = 6
    Else
        tax_rate = 0
    End If
End If

关键注意事项

  • 必须用原始创建日期:绝对不能用当前系统日期来判断,不然如果用户之后修改旧发票,系统会误以为是新发票,错误改成0%税率
  • 日期格式适配:不同编程语言的日期写法有差异,比如如果是Python,判断条件会是invoice_create_date >= datetime.date(2024, 6, 1);如果是SQL批量更新,要写WHERE invoice_date >= '2024-06-01'
  • 先补日期字段(如果没有的话):如果你的系统里发票没存创建日期,那得先给发票表加这个字段,不然根本没法准确区分新旧发票,这是前提
  • 测试要覆盖两种场景:一定要拿5月31日的旧发票和6月1日的新发票分别测试,确保旧发票税率不变,新发票正确应用0%

内容的提问来源于stack exchange,提问作者Neqia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:53:32