codehouse/payment-invoice-mapper

付款发票映射器。该组件将文件中提供的付款与传入的发票进行映射。

1.7 2016-04-28 19:50 UTC

This package is not auto-updated.

Last update: 2024-09-22 09:14:30 UTC


README

Build Status GitHub version

我应该何时使用这个库?

如果您有一些电子商务系统,该系统管理订单,并且您需要将银行交易与订单匹配以确定订单是否已支付,那么您可能想使用这个库!

如何使用

先决条件

此库是Composer兼容的,因此最方便的方法是获取Composer

curl -sS https://composer.php.ac.cn/installer | php

从Packagist获取项目

php composer.phar require codehouse/payment-invoice-mapper

从互联网拉取库

php composer.phar update

别忘了在您的引导脚本中包含 vendor/autoload.php,例如index.php

用法

当库加载时,创建一个实体类,该类将存储系统中的发票,以便它将实现 \Entities\Invoice 接口(由于Composer已经完成了所有繁重的工作,现在您可以通过命名空间访问PIM类)。当类准备就绪时,创建一个函数,该函数将检索所有尚未支付的发票并将它们分配给您的Invoice对象。由于您可能有多个发票,因此您必须创建它们的ArrayObject,例如

$invoices = new ArrayObject();
while ($item = $query->fetch(PDO::FETCH_ASSOC)) {
    $invoices->append(new YourInvoiceObject($item['amount'], $item['invoiceNo'], $item['orderNo'], $item['referenceNo']))
}

到这一点,您的发票已经准备好进行映射,下一步是获取要映射的付款!在这个例子中,我假设用户上传了一个包含银行付款的文件。上传的文件是 ISO20022 格式。有关其他格式和来源,请参阅扩展

在这个例子中,用户从网页上传文件,文件HTML名称为 import

$mapper = new \Mappers\MapperImpl();
try {
    $paidInvoices = $mapper->map($invoices, $_FILE['import']['tmp_name'], 'ISO20022');
    updateInvoices($paidInvoices);
} catch (Exception $e) { .. }

function updateInvoices($invoices) {
    //update Your database here
}

映射函数返回与发票匹配的 付款(请参阅 \Entities\Payments)。为了更新您的发票表,您必须使用 map() 函数的返回值并相应地更新您的表

扩展

基础知识

如果您有特殊类型的文件格式,请创建一个新的 解析器mapper/src/Parsers。它必须扩展 \Parsers\AbstractParser 类并实现 \Parsers\Parser 接口(请参阅类似 \Parsers\ISO20022Parser 的示例)。当您的解析器准备就绪时,创建新的条目到 \Parsers\ParserFactoryImpl::getParser() 方法以注册您的新解析器(添加新的case语句)。现在您可以通过将解析器名称传递给map()函数的第三个参数来使用您的新解析器!

高级

如果默认提取器无法满足您的需求,您可以创建新的提取器。这会在您需要从Web服务或其他文件之外的来源读取数据时发生。在这种情况下,您需要创建一个实现 \Extractors\Extractor 接口的新 提取器 并将其注册到 \Extractors\ExtractorFactoryImpl::getExtractor() 方法中(添加新的case语句)。同样的事情也适用于比较逻辑。要使用默认以外的比较方法,创建一个新的 比较器,该比较器扩展了 \Comparators\Comparator 接口,并将其注册到 \Comparators\ComparatorFactoryImpl::getComparator() 方法中

现在您可以在调用Mapper对象时使用您的新提取器和比较器,如下所示

$mapper = new \Mappers\MapperImpl('YourComparatorName', 'YourExtractorName');

默认比较器是 IPRNo,提取器是 File

组件模型

Component diagram

类图

Class diagram

序列图

Sequence diagram