realtyhub / invoice-painter-bundle
此包已被弃用且不再维护。未建议替代包。
关于此包最新版本(dev-master)无可用许可证信息。
Symfony2 Bundle,用于生成PDF发票
dev-master
2018-04-24 10:24 UTC
Requires
- php: >=5.3.3
- slik/dompdf-bundle: dev-master
- symfony/framework-bundle: ~2.3
- symfony/twig-bundle: ~2.3
This package is not auto-updated.
Last update: 2022-10-01 06:05:13 UTC
README
Invoice Painter Bundle
此Symfony2包的简单目的是帮助您的应用程序生成PDF发票。它不涉及与您的定价或支付系统相关的逻辑,这项工作仍然由您的应用程序执行。
安装和配置
Composer.json
{ ... "require": { "realtyhub/invoice-painter-bundle": "dev-master" } }
AppKernel.php
<?php public function registerBundles() { $bundles = array( // ... new Realtyhub\InvoicePainterBundle\RealtyhubInvoicePainterBundle(), ); }
config.yml
realtyhub_invoice_painter: currency_symbol: "dollar" #supported options 'dollar', 'pound', 'euro', 'yen' tax_short_name: "TAX" #Can be any string you like, such as "VAT" or "GST"
基本用法
//Inside controller file use Realtyhub\InvoicePainterBundle\Entity\InvoicePainterDataContainer; use Realtyhub\InvoicePainterBundle\Entity\InvoicePainterItem; class DefaultController extends Controller { public function invoiceTestAction() { $invoiceData = new InvoicePainterDataContainer(); $invoiceData->setInvoiceDate( new \DateTime() ); $invoiceData->setTaxNumber( '200 122 492' ); $invoiceData->setInvoiceNumber( 'INV00034' ); $invoiceData->addClientNameLine('Your clients name'); $invoiceData->addClientNameLine('or clients business name'); $invoiceData->addClientAddressLine('89 Green Road'); $invoiceData->addClientAddressLine('Melbourne, VIC'); $invoiceData->addClientAddressLine('Australia'); $invoiceData->addClientAddressLine('3000'); $invoiceData->addCompanyNameLine('Your Company Name'); $invoiceData->addCompanyNameLine('Another line of your company name'); $invoiceData->addCompanyAddressLine('920 Smith Street'); $invoiceData->addCompanyAddressLine('Sydney, NSW'); $invoiceData->addCompanyAddressLine('Australia'); $invoiceData->addCompanyAddressLine('2000'); $invoiceData->addInvoiceItem( InvoicePainterItem::createFromParams(1499, 0.2, 'Dell Laptop', new \DateTime() ) ); $invoiceData->addInvoiceItem( InvoicePainterItem::createFromParams(119, 0.2, 'Canon Computer Printer', new \DateTime() ) ); $invoiceData->addInvoiceItem( InvoicePainterItem::createFromParams(6, 0.2, 'A4 printer paper', new \DateTime() ) ); return $this->forward('realtyhub_invoice_painter:paintAction', array('invoiceData' => $invoiceData)); }
### 使用InvoicePainterItemInterface的替代技术
您可能已经有一个直接与发票项目相关的实体。例如,您的实体可能已经包含销售价格、税率、描述和销售日期。
在这种情况下,您可以令此实体实现InvoicePainterItemInterface
//Some entity file
use Realtyhub\InvoicePainterBundle\Entity\InvoicePainterItemInterface;
/**
* @ORM\Table(name="sales_history")
* @ORM\Entity()
*/
class SalesHistory implements InvoicePainterItemInterface
{
/**
* @ORM\Column(name="description", type="string", length=255)
*/
private $description;
/**
* @ORM\Column(name="sale_at", type="datetime")
*/
private $saleAt;
/**
* @ORM\Column(name="price_ex_tax", type="float")
*/
private $priceExTax;
/**
* @ORM\Column(name="tax_rate", type="float")
*/
private $taxRate;
//Implement methods from InvoicePainterItemInterface
public function getInvoicePainterAmountEx()
{
return $this->priceExTax;
}
public function getInvoicePainterTaxRate()
{
return $this->taxRate;
}
public function getInvoicePainterDate()
{
return $this->saleAt;
}
public function getInvoicePainterDescription()
{
return $this->description;
}
//changes required in the controller action
$salesHistory = $salesHistoryRepository->findAll();
foreach ($salesHistory as $sale)
{
// $sale will be instance of SalesHistory
$invoiceData->addInvoiceItem( InvoicePainterItem::createFromInterface($sale) ); //instead of $invoiceData->addInvoiceItem( InvoicePainterItem::createFromParams(1499, 0.2, 'Dell Laptop', new \DateTime() ) );
}