stacss/laravel-upd
Composer 安装命令:
composer require stacss/laravel-upd
包简介
Laravel package for generating PDF documents: UPD, reconciliation statements and Russian invoices
关键字:
README 文档
README
stacss/laravel-upd — Laravel package для генерации PDF-документов:
- УПД
- акта сверки
- счета на оплату
Пакет использует barryvdh/laravel-dompdf, считает НДС через встроенный VatCalculator и отдает готовый Barryvdh\DomPDF\PDF.
Совместимость
Поддерживаются:
- PHP
8.1+ - Laravel
10 - Laravel
11 - Laravel
12
Пакет не заявляет поддержку всех версий Laravel. По текущим constraints в composer.json поддерживаются только illuminate/support ^10|^11|^12.
Установка
Установка в обычный Laravel-проект:
composer require stacss/laravel-upd
Публикация конфига и шаблонов:
php artisan vendor:publish --tag=upd-config php artisan vendor:publish --tag=upd-views
Быстрый старт
УПД
use Stacss\LaravelUpd\UpdRenderer; $renderer = app(UpdRenderer::class); $pdf = $renderer->pdf([ 'document' => [ 'number' => '123', 'date' => now(), 'status' => 1, ], 'seller' => config('upd.seller'), 'buyer' => [ 'name' => 'ООО Покупатель', 'inn' => '1234567890', 'kpp' => '123456789', 'address' => 'г. Москва', ], 'items' => [ [ 'name' => 'Тестовый товар', 'code' => 'TST-001', 'unit' => 'шт', 'unit_code' => '796', 'quantity' => 2, 'price' => 100, 'vat_rate' => 20, 'price_type' => 'net', ], ], ]); $pdf->save(storage_path('upd.pdf'));
Акт сверки
use Stacss\LaravelUpd\ReconciliationRenderer; $renderer = app(ReconciliationRenderer::class); $pdf = $renderer->pdf([ 'act_date' => now(), 'period' => [ 'from' => now()->startOfMonth(), 'to' => now()->endOfMonth(), ], 'left' => [ 'full_name' => 'ООО Ромашка', 'short_name' => 'ООО Ромашка', 'director_post' => 'генерального директора', 'director_full' => 'Иванова Ивана Ивановича', 'director_short' => 'Иванов И. И.', 'director_sign_note' => 'Иванов ' . now()->format('d.m.Y'), 'basis' => 'Устава', ], 'right' => [ 'full_name' => 'ООО Покупатель', 'short_name' => 'ООО Покупатель', 'director_post' => 'генерального директора', 'director_full' => 'Петрова Петра Петровича', 'director_short' => 'Петров П. П.', 'director_sign_note' => 'Петров ' . now()->format('d.m.Y'), 'basis' => 'Устава', ], 'opening' => [ 'date' => now()->startOfMonth(), 'balance' => 0, ], 'closing' => [ 'date' => now()->endOfMonth(), 'balance' => 10000, ], 'operations' => [ [ 'title' => 'Накладная №1', 'debit' => 10000, 'credit' => 0, ], ], ]); $pdf->save(storage_path('reconciliation.pdf'));
Счет на оплату
use Stacss\LaravelUpd\InvoiceRenderer; $renderer = app(InvoiceRenderer::class); $pdf = $renderer->pdf([ 'document' => [ 'number' => '15', 'date' => now(), 'due_date' => now()->addDays(5), 'base' => 'Оплата по счету за товары', 'contract' => 'Договор №5 от 01.01.2026', ], 'seller' => [ 'name' => 'ООО Ромашка', 'short_name' => 'ООО Ромашка', 'inn' => '7700000000', 'kpp' => '770001001', 'ogrn' => '1027700000000', 'address' => 'г. Москва, ул. Пример, д. 1', 'phone' => '+7 (999) 123-45-67', 'email' => 'info@example.ru', ], 'seller_bank' => [ 'bank_name' => 'ПАО Сбербанк', 'bik' => '044525225', 'account' => '40702810900000000001', 'corr_account' => '30101810400000000225', ], 'buyer' => [ 'name' => 'ООО Покупатель', 'short_name' => 'ООО Покупатель', 'inn' => '7800000000', 'kpp' => '780001001', 'address' => 'г. Санкт-Петербург, ул. Тестовая, д. 5', ], 'items' => [ [ 'name' => 'Товар 1', 'brand' => 'ACME', 'code' => 'ABC-001', 'unit' => 'шт', 'unit_code' => '796', 'quantity' => 2, 'price' => 1000, 'vat_rate' => 20, 'price_type' => 'net', ], ], 'payment' => [ 'comment' => 'Без доверенности. Оплата означает согласие с условиями поставки.', ], 'signatures' => [ 'director' => 'Иванов И.И.', 'accountant' => 'Петров П.П.', ], ]); $pdf->save(storage_path('invoice.pdf'));
Примеры документов
Счет на оплату
УПД
Формат данных для счета
Обязательные поля:
document.numberdocument.dateseller.nameseller_bank.bank_nameseller_bank.bikseller_bank.accountitems[*].nameitems[*].unititems[*].quantityitems[*].price
Опциональные поля:
- весь блок
buyer document.due_datedocument.basedocument.contractseller.short_nameseller.ogrnseller.phoneseller.emailseller_bank.corr_accountitems[*].branditems[*].codeitems[*].unit_codepayment.purposepayment.vat_textpayment.commentsignatures.directorsignatures.accountant
Примечания:
- если
buyerне передан, счет все равно будет сгенерирован - если
payment.purposeне передан, пакет сформирует строку автоматически - если
payment.vat_textне передан, пакет сформирует его из рассчитанного НДС - колонки
БрендиКодвыводятся только если хотя бы у одной позиции есть непустые значения brandнормализуется изbrand,brand_name,manufacturer,vendorcodeнормализуется изcode,sku,article
Конфигурация
Файл config/upd.php:
return [ 'seller' => [ 'name' => 'АВТОиностранец', 'inn' => '', 'kpp' => '', 'address' => '', 'phone' => '', ], 'default_vat_rate' => 20.0, 'default_price_type' => 'net', 'view' => 'laravel-upd::upd', 'reconciliation_view' => 'laravel-upd::reconciliation', 'invoice_view' => 'laravel-upd::invoice', 'bank_details' => [ 'bank_name' => '', 'bik' => '', 'account' => '', 'corr_account' => '', ], 'invoice_defaults' => [ 'base' => '', 'contract' => '', 'comment' => '', ], ];
Если опубликованы шаблоны
Если вы уже публиковали views пакета в проекте-потребителе, Laravel будет использовать их вместо шаблонов из vendor.
После обновления шаблонов пакета перепубликуйте их:
php artisan vendor:publish --tag=upd-views --force php artisan view:clear
Если вы меняли опубликованные шаблоны вручную, перепубликация с --force их перезапишет.
Тестирование
composer test
Стиль кода
Проверка:
composer cs
Исправление:
composer cs-fix
Лицензия
MIT
stacss/laravel-upd 适用场景与选型建议
stacss/laravel-upd 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 35 次下载、GitHub Stars 达 2, 最近一次更新时间为 2025 年 11 月 28 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「dompdf」 「PDF GENERATOR」 「upd」 「УПД」 「универсал�」 「ный передаточный доку�」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 stacss/laravel-upd 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 stacss/laravel-upd 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 stacss/laravel-upd 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Memio's PrettyPrinter, used to generate PHP code from given Model
A Laminas module for incorporating DOMPDF support - Originally by Raymond Kolbe
A fork of barryvdh/laravel-dompdf with no PNG alpha processing. A DOMPDF Wrapper for Laravel
Laravel pdf manager package
Dompdf plugin for CakePHP
Provides TCPDF integration for Symfony
统计信息
- 总下载量: 35
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-11-28

