sylius/invoicing-plugin

适用于Sylius的发票插件。

安装次数: 786 181

依赖者: 2

建议者: 0

安全性: 0

星标: 79

关注者: 21

分支: 82

公开问题: 33

类型:sylius-plugin

v0.25.1 2024-06-26 07:37 UTC

README

发票插件

此插件创建与订单相关的发票。

SyliusInvoicingPlugin在订单处于指定状态(默认:已创建)时创建新的不可变发票,并允许客户和管理员下载与订单相关的发票。

Screenshot showing invoice Screenshot showing invoice browsing page in administration panel

商业价值

发票插件的主要目的是创建一份代表客户购买特定产品并支付其费用的意愿的文件。

发票也可以被视为下单的证据。因此,它可以作为.pdf文件下载,并由管理员手动发送给客户,或者一旦订单支付,自动发送。

插件满足发票领域的附加功能是能够在卖家上设置账单数据。

安装

  1. 需要通过composer安装的插件

    composer require sylius/invoicing-plugin

    请记住,使用composer config extra.symfony.allow-contrib true允许社区食谱或插件安装过程中的社区食谱。

  2. 将迁移应用到您的数据库中

    bin/console doctrine:migrations:migrate
  3. 默认配置假设已启用PDF文件生成。如果您不想使用该功能,请更改应用程序配置

    # config/packages/sylius_invoicing.yaml
    sylius_invoicing:
        pdf_generator:
            enabled: false

    否则,检查您是否具有wkhtmltopdf二进制文件。如果没有,您可以从这里下载。

    如果wkhtmltopdf不在/usr/local/bin/wkhtmltopdf中,请修改.env文件中的WKHTMLTOPDF_PATH环境变量

    WKHTMLTOPDF_PATH=/usr/local/bin/wkhtmltopdf # Change this! :)
    
  4. 如果您想为插件安装之前放置的订单生成发票,请使用以下命令在您的终端中运行

    bin/console sylius-invoicing:generate-invoices

注意!

此安装说明假设您正在使用Symfony Flex。如果您不这样做,请查看传统安装说明。然而,我们强烈建议您使用Symfony Flex,它要快得多! :)

扩展点

SyliusInvoicingPlugin中包含的大多数操作都是在订单状态更改后执行的事件。

以下是一个关于Winzou State Machine的示例

winzou_state_machine:
    sylius_payment:
        callbacks:
            after:
                sylius_invoicing_plugin_payment_complete_producer:
                    on: ['complete']
                    do: ['@sylius_invoicing_plugin.event_producer.order_payment_paid', '__invoke']
                    args: ['object']

上面放置的代码是config.yml文件中的配置的一部分。您可以通过添加新的状态机事件监听器或编辑现有监听器来自定义此文件。

以下是一个关于Symfony的workflow的示例

<service id="sylius_invoicing_plugin.event_listener.workflow.payment.produce_order_payment_paid"
       class="Sylius\InvoicingPlugin\EventListener\Workflow\Payment\ProduceOrderPaymentPaidListener">
   <argument type="service" id="sylius_invoicing_plugin.event_producer.order_payment_paid" />

   <tag name="kernel.event_listener" event="workflow.sylius_payment.completed.complete" priority="100" />
</service>

除此之外,发票模型被视为资源。

您可以在这里了解更多关于资源的信息

http://docs.sylius.com/en/latest/components_and_bundles/bundles/SyliusResourceBundle/index.html.

因此,显示发票列表的模板在routing.yml文件中定义

sylius_invoicing_plugin_invoice:
    resource: |
        alias: sylius_invoicing_plugin.invoice
        section: admin
        templates: "@SyliusAdmin\\Crud"
        only: ['index']
        grid: sylius_invoicing_plugin_invoice
        permission: true
        vars:
            all:
                subheader: sylius_invoicing_plugin.ui.manage_invoices
            index:
                icon: inbox
    type: sylius.resource

另一个可以替换和自定义的方面是在订单显示视图中显示发票列表。负责显示与订单相关的发票的代码通过Sonata事件注入到现有的Sylius模板中。您可以在这里了解更多关于通过事件自定义模板的信息

http://docs.sylius.com/en/latest/customization/template.html

发票文件

默认情况下,当订单支付时,不可变的发票PDF文件将保存在服务器上。保存目录由%sylius_invoicing.invoice_save_path%参数指定,如有必要可以覆盖。

《Sylius\InvoicingPlugin\Entity\Invoice》实体与其文件之间没有直接关系。它是根据在《Sylius\InvoicingPlugin\Provider\InvoiceFileProviderInterface》服务中定义的《Invoice::$number》来解决的。通过重写此服务,您可以更改用于检索发票文件的逻辑。

数据样本

您可以将《ShopBillingData》数据样本添加到yaml中,以便将渠道《ShopBillingData》信息添加到您的安装中。有关数据样本配置的更多说明,请参阅数据样本配置说明

安全问题

如果您认为您发现了一个安全问题,请勿使用问题跟踪器,也不要公开张贴。相反,所有安全问题都必须发送到《security@sylius.com》。