2

不确定其他地方是否相同,但在我的国家/地区,公司服务的发票编号必须是连续的。

我的 Laravel 应用程序通过订阅销售服务。它必须生成带有序号(abcdef-0001abcdef-0002等)的发票。我将 Laravel Cashier 与 Stripe 一起使用,因为两者都易于配置。现在我想生成发票。但是 Laravel Cashier 中的发票在任何地方都没有序列号。我可以通过以下方式访问一位用户的“发票”:

$invoices = $user->invoices();

但它似乎不是真正的发票,只是来自 Stripe的付款信息。为每个用户调用此函数以获取发票总数,然后计算序号不是一种选择。

如何在不破坏 Laravel Cashier (+Stripe) 构建的简单模型的情况下轻松处理发票的序列号?有没有合适的方法来做这种事情?还是我必须重新开发一个完整的系统来满足这种需求?

4

2 回答 2

1

只需创建您自己的模型 BizInvoice,给它一个字段 invoiceID(喜欢它..您可以查询最后一张发票...获取 id ...使用自定义逻辑递增 1 或仅使用默认 id 字段)并制作一个与用户模型和 Laravel 收银员支付模型的关系。

这样,您就有了一个唯一的(真实)发票编号(id),您可以通过用户或/和付款访问该编号

于 2017-04-13T09:20:37.987 回答
0

Laravel Cashier中的发票实际上是Stripe 发票对象的抽象。虽然 Stripe 提供了一个连续的发票编号,但 Cashier 出于某种原因没有公开它,但有一个逃生口:通过调用asStripeInvoice()发票对象,您可以检索底层的 Stripe 对象。

$lastInvoice = $billable->invoices()->last();

// A sequential invoice number as provided by Stripe, 
// something like "6EEE0995-0001"
$invoiceNumber = $lastInvoice->asStripeInvoice()->number;
于 2021-03-20T13:09:40.300 回答