不确定其他地方是否相同,但在我的国家/地区,发票号码必须是公司服务的连续编号。
我的Laravel应用程序通过订阅销售服务。它必须生成包含序号(abcdef-0001
,abcdef-0002
等)的发票。我使用Laravel Cashier和Stripe,因为它们都很容易配置。现在我要生成发票。但Laravel Cashier的发票没有任何序列号。我可以访问一个用户"发票"用:
$invoices = $user->invoices();
但它似乎不是真正的发票,只是来自Stripe的付款信息。为每个用户调用此函数以获取发票总数,然后计算序号不是一个选项。
如何在不破坏Laravel Cashier(+ Stripe)构建的简单模型的情况下轻松处理发票的序号?有没有正确的方法来做这种事情?或者我是否需要为这种需求重新开发一个完整的系统?
答案 0 :(得分:1)
只需创建自己的模型BizInvoice,给它一个字段invoiceID(就像你喜欢它..你可以查询最后一个发票...获取id ...用自定义逻辑增加1或只使用默认的id字段)并与用户模型和Laravel出纳支付模式建立关系。
这样您就可以通过用户或/和付款访问唯一(真实)发票编号(ID)
答案 1 :(得分:0)
Invoices in Laravel Cashier 实际上是对 Stripe invoice objects 的抽象。虽然 Stripe 提供了一个连续的发票编号,但 Cashier 出于某种原因并没有公开它,但有一个逃生口:通过在发票对象上调用 asStripeInvoice()
,您可以检索底层的 Stripe 对象。
$lastInvoice = $billable->invoices()->last();
// A sequential invoice number as provided by Stripe,
// something like "6EEE0995-0001"
$invoiceNumber = $lastInvoice->asStripeInvoice()->number;