hippone / algerian-invoice-code-generator
v0.2.0
2021-07-12 14:34 UTC
Requires
- php: ^7.4
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-15 21:59:09 UTC
README
该库可用于生成发票、报价或其他商业交易文档的代码。
目标
旨在提供有助于生成所需代码的界面。
安装
推荐(也是最佳)安装方式是使用composer
composer require hippone/algerian-invoice-code-generator
用法
Hippone\InvoiceCode\CodeGenerator
代码是库的主要组件,它实现了 Hippone\InvoiceCode\CodeGeneratorInterface
,该类目前有一个依赖项(即)实现 Hippone\InvoiceCode\Model\IdentifiableProvider
,由客户端提供,此依赖项是客户端使用的持久化层的接口,一个简单的实现示例是使用PDO与SQLite:
<?php declare(strict_types=1); namespace MyNamespace\Persistence\SQLite; use DateTimeImmutable; use Hippone\InvoiceCode\Model\CodeComponents; use Hippone\InvoiceCode\Model\IdentifiableProvider; use PDO; class SQLiteIdentifiableProvider implements IdentifiableProvider { private PDO $pdo; public function __construct(PDO $pdo) { $this->pdo = $pdo; } public function nextCode(DateTimeImmutable $year): CodeComponents { $statement = $this->pdo->prepare(' SELECT COUNT(*) FROM invoices AS i WHERE strftime("%Y", i.created_at) = :currentYear '); $statement->bindValue(':currentYear', $year->format('Y')); $statement->execute(); $currentCount = $statement->fetchColumn(); $sequentialNumber = $currentCount + 1; return CodeComponents::from($sequentialNumber, $year); } }
一旦实现了 Hippone\InvoiceCode\Model\IdentifiableProvider
,就可以实例化并使用 Hippone\InvoiceCode\CodeGenerator
类,如下所示:
$codeGenerator = new CodeGenerator(new SQLiteIdentifiableProvider($pdo)); // assume PDO object is instantiated $codeGenerator->generateForYear(DateTimeImmutable::createFromFormat('Y', '2021')); // replace 2021 by the desired value