remp/crm-print-module

3.4.0 2024-09-06 07:55 UTC

README

Translation status @ Weblate

打印模块的目的是让您能够生成应收到您报纸/杂志打印版本的用户的导出文件,跟踪用户获得的哪些期数,并让您能够在打印模块的基础上创建自己的模块,以便与您的印刷配送提供商集成。

安装模块

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

composer require remp/crm-print-module

启用模块

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

extensions:
	- Crm\PrintModule\DI\PrintModuleExtension

运行服务命令以生成 CRM 内部结构

php bin/command.php phinx:migrate
php bin/command.php user:generate_access
php bin/command.php api:generate_access
php bin/command.php application:seed

配置

目录

导出默认目录为 APP_ROOT/content/export。目录在首次上传时自动创建。

您可以使用其他存储桶进行上传,但需要在您的配置文件 app/config/config.neon 中定义它们。

services:	
	# ...
	# fileManager extension - example uploads
	exampleExportsAdapter: League\Flysystem\Local\LocalFilesystemAdapter('%appDir%/../content/examples_exports', null)
	exampleExportsFileSystem: League\Flysystem\Filesystem(@exampleExportsAdapter)

	applicationMountManager:
		setup:
			- mountFilesystem('exampleExports', @exampleExportsFileSystem)

使用打印模块

前端

打印模块增加了 print 地址类型。此地址类型应用于您的报纸/杂志的配送。

模块还向 CRM 添加了新的 内容访问,名为 print。您可以将此 内容访问 添加到选定的 订阅类型 中,并允许您的客户购买它们。如果用户购买了带有 print 访问权限的订阅,CRM 将在支付成功后要求用户输入配送(print)地址。

Success page print address

如果用户因某些原因未输入地址,则会在客户区域每个页面上通过通知提醒用户输入缺失的地址。管理员将通过 CRM 管理员中的小部件以列表形式提醒所有具有活动打印订阅但缺少 print 地址的人员。

Enter address widget

您始终可以通过覆盖您自定义模块中的默认小部件来实现自己的实现。

public function registerWidgets(\Crm\ApplicationModule\Widget\WidgetManagerInterface $widgetManager)
{
    // ...
    $widgetManager->overrideWidget(
        'frontend.layout.top',
        $this->getInstance(\Crm\PrintModule\Components\EnterAddressWidget::class),
        $this->getInstance(\Crm\FooModule\Components\EnterAddressWidget::class),
        100
    );
    // ...
}

后端

由于每个出版商都与不同的配送合作伙伴合作,他们需要不同格式的数据,因此我们只准备了生成包含应接收印刷版的订阅者名单的 CSV 的演示命令。

我们建议您基于此命令创建自己的导出命令实现,并将其修改以匹配您的需求。

命令使用了两个主要概念

  • 数据源。这应该返回包含所有可以用于生成 CSV 的订阅的查询。在我们的 示例数据源 中,我们选择所有 print 订阅。
  • 视图。这是处理订阅如何实际显示(导出)到 CSV 文件的组件。在这里,您可以定义导出应具有哪些列以及实际值,并根据您的需求对其进行格式化。请参阅 示例视图 以了解 CSV 是如何创建的。

命令被定义为在配送前两天生成导出 - 这是我们的领域的行业标准。如果您的流程不同,请随意修改您的实现。

您还可以看到,该命令使用 print_daily 作为 导出标准。这是为了区分多个导出,因为一个出版商可能有一个报纸的每日配送和一些杂志的月度配送。此 用于识别正在使用的导出。因此,您应该为不同的导出有不同的生成命令。

导出引擎自动处理每个印刷订阅者的打印状态。每次生成时,都会标记每个客户,以向您提供以下信息:

  • 新订阅者 - 她将获得第一版
  • 反复订阅者 - 她之前(例如前一天)已经收到报纸,今天也应收到
  • 已移除订阅者 - 她之前(例如前一天)已经收到报纸,今天不应收到报纸。

这些标记有助于一些不需要每天完整订阅者列表的配送合作伙伴,但它们需要添加到列表或从列表中删除的人的增量变化。

一旦生成,您可以在CRM管理员中查看和下载导出(/print/print-subscriptions-admin/

Print admin

组件

EnterAddressWidget

显示缺失地址警告的简单小部件。

alt text

源代码

如何使用

PaymentSuccessPrintWidget

带有地址表的订阅成功页面小部件。

alt text

源代码

如何使用

RequestNotification

地址变更请求列表小部件。

alt text

源代码

如何使用

UserChangeAddressRequests

地址变更请求列表小部件。

alt text

源代码

如何使用

UserPrintExport

用户详细信息打印导出列表小部件。

alt text

源代码

如何使用