remp/crm-invoices-module

CRM 发票模块

3.4.0 2024-09-09 12:59 UTC

README

Translation status @ Weblate

发票模块是支付模块的扩展,用于提供已确认支付的发票。您可以根据以下部分自定义发票布局。

要生成发票,用户需要提供发票地址。这将在支付成功页面请求,可以在客户区域随时更改。

发票始终动态生成 - 系统不会存储生成的PDF文件以供以后使用。如果模板更改,旧发票的模板也可能更改。用于生成的发票数据在第一次生成时存储,并且永远不会更改。因此,模板可以更改,但数据不会。

由于欧盟立法,用户只能在支付后15天内的期限内请求生成发票(如果未自动生成)。其他情况需要您和您的会计团队手动处理。

安装模块

我们建议使用Composer进行安装和更新管理。

composer require remp/crm-invoices-module

启用模块

将已安装的扩展添加到您的app/config/config.neon文件中。

extensions:
	- Crm\InvoicesModule\DI\InvoicesModuleExtension

计划任务

模块不提供任何需要定期执行的命令。

服务命令

模块可能会提供在部署环境中运行的服务命令。主要处理内部更改并防止直接与数据库交互。您可以通过在运行命令时使用--help开关来显示所需和可选的参数。

发票模块提供

  • invoice:send:根据支付的可变符号手动发送发票。

发票编号

默认情况下,CRM使用月度序列(每年每月都有其自己的序列)并根据服务交付日期(实际上是支付日期)生成发票编号。

您可以通过添加自己的InvoiceNumberInterface实现并覆盖默认实现来覆盖生成发票编号序列的方式,在您的config.neon

services:
	# ...
	invoiceNumber: Crm\FooModule\Repository\InvoiceNumber

发票模板

发票生成器使用.latte模板生成发票PDF。默认情况下,该模块使用我们准备的简单通用布局。您可以看到布局的源代码

在示例中,您可以看到演示者为您提供了$invoice变量。发票根据支付发票的引用存储为paymentinvoice_id属性。发票对支付的引用是variable_symbol,尽管它是间接的,并不保证(没有外键)。

每张发票都有一个对发票编号的引用,它是一组唯一的字符串标识符列表,保证根据delivery_date(交货日期)保持顺序,用于会计目的。您可以通过访问$invoice->invoice_number->number来读取编号。

以下是invoice提供的属性列表

除此之外,应用程序配置允许您设置一些额外的值,这些值可以在发票模板中使用。您始终可以在您的模块种子器中创建自己的配置字段 - 以发票模块的配置种子器为例。

这些配置值是全局的,可以通过$config->get('foo')获取 - 将foo替换为以下选项之一

可以通过$invoice->related('invoice_items')获取发票项目。项目基于在发票首次生成时存在的支付项目生成。从那个点开始,项目被单独保存。以下是每个发票项目提供的属性列表

如果您想使用自己的布局,请使用上述描述的变量准备自己的模板。一旦准备好,将以下片段添加到您的app/config/config.local.neon文件中(根据需要进行修改)

invoiceGenerator:
	setup:
		- setTemplateFile('%appDir%/modules/FooModule/templates/invoices/foo.latte')

该片段告诉发票生成器使用给定路径提供的模板而不是默认模板。

将发票附加到电子邮件通知中

默认情况下,PDF发票将附加到包含支付引用(作为NotificationEvent中的参数)的每个电子邮件通知中。此外,此通知必须是应用程序处理特定触发器(Hermes消息)的结果。通常,这发生在Hermes消息触发一个场景(有关详细信息,请参阅ScenariosModule)并发出NotificationEvent(这是通过电子邮件节点完成的)。

为了限制在附加发票时应接受哪些Hermes消息(有关实现细节,请参阅PreNotificationEventHandler),将以下配置添加到您的config.local.neon文件中,列出允许的Hermes消息类型

invoicesPreNotificationEventHandler:
    setup:
        - enableForNotificationHermesTypes('new-subscription', 'payment-status-change', 'some-other-hermes-message')

组件

DownloadReceiptButton

前端/管理员的下载支付收据按钮。

alt text

源代码

如何使用

InvoiceButton

前端/管理员的下载支付发票按钮。

alt text

源代码

如何使用

InvoiceLabel

用户详细信息支付列表发票标签。

alt text

源代码

如何使用

PaymentSuccessInvoiceWidget

从支付成功页面下载发票的小部件。

alt text

源代码

如何使用