aligent/orocommerce-invoices-bundle

OroCommerce Bundle 允许客户通过店面门户查看/支付发票

v5.0.1 2022-08-23 03:48 UTC

README

此插件添加了客户在店面客户门户中查看/支付发票的功能。

Customer Invoice List

Customer Invoice Payment

功能

  • 客户可以列出、筛选并查看他们的未支付/已支付/逾期发票
  • 到期后,发票会自动标记为逾期
  • 客户可以对一个或多个发票进行支付
  • 客户可以对每个发票支付自定义金额
  • 可以配置发票的允许支付方式
  • 可以在支付表单上显示自定义消息
  • 成功支付的发票金额会自动从剩余发票余额中扣除
  • 全额支付后,发票会自动标记为已支付
  • 发票可以在Oro后端(管理员)面板中列出、筛选和查看,包括相关的发票支付
  • 可以在全局或按网站关闭发票功能
  • 可以通过客户用户角色(ACL)权限控制对发票和支付的访问

要求

  • OroCommerce 5.0

重要注释/注意事项

  • 发票是完全独立的实体,目前它们与Oro订单、结账或支付条款方法没有任何关系。
  • 目前只能通过API(例如,将发票推入Oro来自第三方系统)或通过Oro自定义来创建发票。
  • 每个发票的剩余余额仅使用当前成功的发票支付金额进行更新,而不是Oro中所有发票支付的总金额(这样可以通过API设置每个发票的总支付金额)。这允许支持离线/外部支付。
  • 此插件目前不会触发电子邮件通知(例如,发票已创建、发票到期/逾期、发票支付确认)。
  • 重定向到外部支付表单(例如,PayPal Express)的支付方式可能不受支持,尚未进行测试。
  • 发票支付被标记为 active: true,一旦成功执行 PaymentTransaction,则更新为 active: false

安装和使用

注意:根据您的本地环境调整说明

安装

通过Composer安装

composer require aligent/orocommerce-invoices-bundle

安装完成后,运行平台更新以执行安装

php bin/console oro:platform:update --env=prod

配置

安装完成后,访问 系统配置 => 商务 => 订单 => 发票管理

Configuration

从这里可以启用/禁用发票功能,选择发票支付的可用支付方式,并在发票支付表单上显示自定义消息(可选)。

演示数据固定

为了测试目的,此插件包含一系列具有各种状态(开放、逾期、已支付)的示例发票。这些可以通过以下命令在开发环境中加载

php bin/console oro:migration:data:load --env=dev --fixtures-type=demo --bundles=AligentInvoiceBundle -vvv

数据库修改

创建数据库表

  • aligent_invoice - 存储发票 (Invoice)
  • aligent_invoice_line_item 存储发票行项 (InvoiceLineItem)
  • aligent_invoice_payment 存储发票支付 (InvoicePayment)
  • aligent_invoice_payment_line_item 存储发票支付行项 (InvoicePaymentLineItem)
  • oro_enum_invoice_status 存储发票状态枚举值 (Extend\Entity\EV_Invoice_Status)

示例API有效载荷

创建新发票

POST /admin/api/aligentinvoices

{
    "data": {
        "type": "aligentinvoices",
        "id": "new-invoice-'1",
        "attributes": {
            "invoiceNo": "INV-413",
            "issueDate": "2022-06-01",
            "dueDate": "2022-07-01",
            "amount": "100.0000",
            "currency": "AUD",
            "totalTax": "11.11",
            "amountPaid": "80.0000",
            "createdAt": "2022-06-01T16:15:20Z",
            "updatedAt": "2022-06-14T02:10:24Z"
        },
        "relationships": {
            "customer": {
                "data": {
                    "type": "customers",
                    "id": "7"
                }
            },
            "lineItems": {
                "data": [
                    {
                        "type": "aligentinvoicelineitems",
                        "id": "line-item-1"
                    },
                    {
                        "type": "aligentinvoicelineitems",
                        "id": "line-item-2"
                    }
                ]
            },
            "status": {
                "data": {
                    "type": "aligentinvoicestatuses",
                    "id": "open"
                }
            }
        }
    },
    "included": [
        {
            "type": "aligentinvoicelineitems",
            "id": "line-item-1",
            "attributes": {
                "amount": "25.0000",
                "currency": "AUD",
                "summary": "Line Item 1"
            }
        },
        {
            "type": "aligentinvoicelineitems",
            "id": "line-item-2",
            "attributes": {
                "amount": "75.0000",
                "currency": "AUD",
                "summary": "Line Item 2"
            }
        }
    ]
}

核心覆盖和扩展

路线图/剩余任务

  • OroCommerce 5.0 支持
  • 实现单元测试
  • 实现演示发票数据设置(使用 aligent/oro-fixtures
  • 更新支付方法配置,使用规则而不是方法(#2
  • 提高发票支付JavaScript组件和SaveState功能的可靠性和可用性
  • 添加全局禁用发票支付的能力(仅查看模式)
  • 实现带有用户角色ACL权限的发票管理员的CRUD UI
  • 自动清理旧的待处理发票支付(但保留失败记录)
  • 确保支持外部托管的支付方法(例如,PayPal Express)

潜在的未来增强

  • 实现支付确认电子邮件
  • 自动创建OroCommerce订单的账单(通过支付条款支付)
  • 可选地将发票行项目链接到OroCommerce订单
  • 关于到期/逾期发票的通知(电子邮件和站内通知)
  • Oro后台办公仪表板小部件(到期/逾期发票)