编写程序以生成发票的标准方法是什么?

时间:2010-07-13 14:13:14

标签: java hibernate jpa invoice

我正在建立一个结算系统。系统需要为客户生成月度发票。

我现在正在做的是使用For循环检查所有客户的先前发票,并确定是否是为客户生成发票的时间。

如果数据库中有大量客户端,我认为这样做可能会非常繁重。

生成发票的标准方法是什么?是否可以制作记录客户下一个发票日期的cron作业,并仅在生成发票时检查特定客户。

万分感谢

3 个答案:

答案 0 :(得分:3)

你提到了一个数据库。你为什么不使用呢?

在“上一次发票的日期”列上添加一个索引,添加一个WHERE子句,仅返回最后一个发票超过一个月前发送的客户。

答案 1 :(得分:1)

  

生成发票的标准方法是什么?是否可以制作记录客户下一个发票日期的cron作业,并仅在生成发票时检查特定客户。

没有标准的方法。但这项任务确实是批处理作业的典型候选者。如果您同时或每天向所有客户收费并且仅根据某些日期条件选择可计费的客户端,请在月末运行它。对于每个客户,尽你所能。根据数据的大小,JPA可能不合适(或者可能考虑Hibernate的StatelessSession甚至忘记它)。

对于调度程序部分,我经常看到像Quartz这样的企业调度程序,甚至是像Control-M,Dollar-U,TNG Workload等更大的专用解决方案。

我强烈建议不要为每个客户创建一份工作。这真的不是一个好的解决方案(地狱管理,不会扩展等)。

答案 2 :(得分:0)

莱昂,我不确定是否真的有这样的标准方式。每个公司文化都将在一定程度上定义如何最好地运行流程以满足他们的要求。你会发现一些应用程序同时处理按需处理的极端情况,而其他应用程序则作为批处理程序运行发票。一般来说,构建您的接口以适应两者是很好的。您可能还需要考虑第三方在某些时候通过网络服务等要求您的API的可能性。(为了节省成本,有问题的公司可能实际上使用局服务'发布'发票 - 我知道这从1日手经验)。您的数据库结构也必须相当健壮并且有足够的回退点,如果任何进程失败等等。

无论如何 - 辩论......:)

吉姆