dvisbeen / knp-invoice
There is no license information available for the latest version (dev-master) of this package.
PDF invoice generation
This package's canonical repository appears to be gone and the package has been frozen as a result.
dev-master
2016-06-06 09:29 UTC
Requires
- php: >=5.3.2
- twig/twig: >=1.4
This package is not auto-updated.
Last update: 2022-04-16 04:41:17 UTC
README
To install this library call:
$ php composer.phar install
Give you an ability, to generate html/pdf invoices.
<?php // Set up Invoice model (required to do anything) $invoice = new Knp\Invoice\Model\Invoice(); // Lets set up seller data now $seller = new Knp\Invoice\Model\Seller(); $seller->setName('KnpLabs France'); // Add address: street, city, zip-code, country $seller->setAddress('11 RUE KERVEGAN', 'NANTES', '44000', 'France'); // Address of logotype image // $seller->setLogo('images/logo.png'); // Now add seller to invoice $invoice->setSeller($seller); // Lets set up buyer data now $buyer = new Knp\Invoice\Model\Buyer(); $buyer->setName('Marek Nowak'); // Add address: street, city, zip-code, country $buyer->setAddress('Kozia 5', 'Kozia Wólka', '00-666', 'Poland'); // Now add buyer to invoice $invoice->setBuyer($buyer); /* // Customer has coupon ? Let's add it $coupon = new Knp\Invoice\Model\Coupon; $coupon->setName('Christmas Holidays'); $coupon->setValue(66.6); // Coupon will expire at given date // $coupon->setExpireAt('2011-12-25'); // Now add coupon to invoice $invoice->setCoupon($coupon); */ // Customer already paid something ? Let's add this $invoice->setPaidAmount(100); // Now let's setup taxes $taxTPS = new Knp\Invoice\Model\Tax; $taxTPS->setName('TPS'); $taxTPS->setValue(5); $taxTVQ = new Knp\Invoice\Model\Tax('TVQ', 8); // Here we setup and add some random entries to invoice for ($i = 0; $i < 5; $i++) { $entry = new Knp\Invoice\Model\Entry(); $entry->setDescription('Development ' . mt_rand(1, 9)); // Netto price per unit $entry->setUnitPrice(mt_rand(100, 500)); // Quantity of given entry $entry->setQuantity(mt_rand(1, 4)); // Entry can have up to two taxes added (i.e. Canada) // If no taxes add by using this method, there will be used 0% default one $entry->addTax($taxTPS); $entry->addTax($taxTVQ); // And let's add entry to invoice $invoice->addEntry($entry); } // Let's select generator // $content = new Knp\Invoice\Generators\Snappy; $content = new Knp\Invoice\Generators\Twig; $content->generate($invoice); // $content->generateAndSave($invoice); # You can generate and save invoice instead of returning to browser // or // $content->generate($invoice, null, 'list'); # generate just list of entries echo $content;
Making your own template
Now you know how to generate and invoice, here you have and example of using own Twig templates:
{# MyDir/invoice.html.twig #} {% extends 'base.html.twig' %} {# This will lookup for this template in: "MyDir" and if not found in default Knp\Invoice theme dir #} {% block content %} <table> <thead> <tr> <th class="col1">Entry</th> <th class="col3">Price</th> <th class="col4">Quantity</th> <th class="col5">Line Total</th> </tr> </thead> <tbody> {%- for entry in invoice.entries %} <tr> <td>#{{ loop.index }}</td> <td class="col3">{{ entry.unitPrice }}</td> <td class="col4">{{ entry.quantity }}</td> <td class="col5">{{ entry.totalPrice }}</td> </tr> {%- endfor %} </tbody> </table> {% endblock %}
<?php $content = new Knp\Invoice\Generators\Twig; $content->setTemplate('MyDir/invoice.html.twig'); $content->generate($invoice); echo $content;
Launch the Test Suite
bin/vendors.sh
Then just call
phpunit
ToDo
https://trello.com/board/knpinvoicebundle/4ec25be9e900feed372d9661