bitbag / invoicing-plugin
Invoicing plugin for Sylius.
Installs: 1 269
Dependents: 0
Suggesters: 0
Security: 0
Stars: 21
Watchers: 7
Forks: 4
Open Issues: 4
Type:sylius-plugin
Requires
- php: ^7.1
- knplabs/knp-snappy-bundle: ^1.5
- sylius/sylius: ^1.0.4
Requires (Dev)
- behat/behat: ^3.3
- behat/mink: ^1.7
- behat/mink-browserkit-driver: ^1.3
- behat/mink-extension: ^2.2
- behat/mink-selenium2-driver: ^1.3
- friends-of-behat/context-service-extension: ^1.0
- friends-of-behat/cross-container-extension: ^1.0
- friends-of-behat/service-container-extension: ^1.0
- friends-of-behat/symfony-extension: ^1.0
- friends-of-behat/variadic-extension: ^1.0
- lakion/mink-debug-extension: ^1.2.3
- phpspec/phpspec: ^3.2
- phpstan/phpstan-shim: ^0.9.2
- phpunit/phpunit: ^5.6
- se/selenium-server-standalone: ^2.52
- sylius-labs/coding-standard: ^1.0
- symplify/easy-coding-standard: ^2.4
This package is auto-updated.
Last update: 2021-09-08 01:00:11 UTC
README
Overview
This plugin enables generating invoices in Sylius platform application. It adds a VAT number field for the billing address during the checkout and allows to download the invoice in the admin panel view.
Support
We work on amazing eCommerce projects on top of Sylius and Pimcore. Need some help or additional resources for a project? Write us an email on mikolaj.krol@bitbag.pl or visit our website! 🚀
Demo
We created a demo app with some useful use-cases of the plugin! Visit demo.bitbag.shop to take a look at it.
The admin can be accessed under demo.bitbag.shop/admin link and sylius: sylius
credentials.
Installation
$ composer require bitbag/invoicing-plugin:dev-master
Add plugin dependencies to your AppKernel.php file:
public function registerBundles() { return array_merge(parent::registerBundles(), [ ... new \Knp\Bundle\SnappyBundle\KnpSnappyBundle(), new \BitBag\SyliusInvoicingPlugin\BitBagSyliusInvoicingPlugin(), ]); }
Note
This plugin uses wkhtmltopdf under the hood wrapped into KnpSnappyBundle. It requires you to install the wkthmltopdf binary. Read more in the KnpSnappyBundle docs and on Wkhtmltopdf website.
Import required config in your app/config/config.yml
file:
# app/config/config.yml imports: ... - { resource: "@BitBagSyliusInvoicingPlugin/Resources/config/config.yml" }
Import routing in your app/config/routing.yml
file:
# app/config/routing.yml ... bitbag_sylius_invoicing_plugin: resource: '@BitBagSyliusInvoicingPlugin/Resources/config/routing.yml'
Finish the installation by updating/migrating the database schema:
$ bin/console doctrine:schema:update --force
Usage
To see what templates you need to override in order to enable this plugin on your storefront, browse Twig files from
/tests/Application/app/Resources/SyliusShopBundle
path of this plugin.
To override the invoice template, override the invoice.html.twig
file of this plugin, which you should
do in app/Resources/BitBagSyliusInvoicingPlugin/views/invoice.html.twig
file of your local project or in the
theme path, in case you are using multiple themes.
In your admin panel, add the company data. So far, only single company data is supported.
In order to see the ability to download invoice, in the checkout, confirm a billing address and fill the VAT number. Make sure you customized your local SyliusShopBundle templates like described above. Then, in the admin panel, you should see a button to download the invoice for an order, which has the billing address with VAT number fulfilled (which in your case, shoul be the last one).
Customization
Available services you can decorate and forms you can extend
bitbag_sylius_invoicing_plugin.controller.action.download_order_invoice BitBag\SyliusInvoicingPlugin\Controller\Action\DownloadOrderInvoice bitbag_sylius_invoicing_plugin.controller.company_data Sylius\Bundle\ResourceBundle\Controller\ResourceController bitbag_sylius_invoicing_plugin.controller.invoice Sylius\Bundle\ResourceBundle\Controller\ResourceController bitbag_sylius_invoicing_plugin.event_listener.company_data BitBag\SyliusInvoicingPlugin\Menu\CompanyDataMenuBuilder bitbag_sylius_invoicing_plugin.event_listener.order_show BitBag\SyliusInvoicingPlugin\Menu\DownloadInvoiceMenuBuilder bitbag_sylius_invoicing_plugin.factory.company_data Sylius\Component\Resource\Factory\Factory bitbag_sylius_invoicing_plugin.factory.invoice Sylius\Component\Resource\Factory\Factory bitbag_sylius_invoicing_plugin.file_generator.invoice_filename BitBag\SyliusInvoicingPlugin\FileGenerator\InvoicePdfFilenameGenerator bitbag_sylius_invoicing_plugin.file_generator.invoice_file BitBag\SyliusInvoicingPlugin\FileGenerator\InvoicePdfFileGenerator bitbag_sylius_invoicing_plugin.form.extension.address BitBag\SyliusInvoicingPlugin\Form\Extension\AddressTypeExtension bitbag_sylius_invoicing_plugin.form.type.company_data BitBag\SyliusInvoicingPlugin\Form\Type\CompanyDataType bitbag_sylius_invoicing_plugin.form.type.invoice BitBag\SyliusInvoicingPlugin\Form\Type\InvoiceType bitbag_sylius_invoicing_plugin.manager.company_data alias for "doctrine.orm.default_entity_manager" bitbag_sylius_invoicing_plugin.manager.invoice alias for "doctrine.orm.default_entity_manager" bitbag_sylius_invoicing_plugin.repository.company_data BitBag\SyliusInvoicingPlugin\Repository\CompanyDataRepository bitbag_sylius_invoicing_plugin.repository.invoice BitBag\SyliusInvoicingPlugin\Repository\InvoiceRepository bitbag_sylius_invoicing_plugin.resolver.company_data BitBag\SyliusInvoicingPlugin\Resolver\CompanyDataResolver bitbag_sylius_invoicing_plugin.resolver.invoice_file BitBag\SyliusInvoicingPlugin\Resolver\InvoiceFileResolver bitbag_sylius_invoicing_plugin.validator.vat_number BitBag\SyliusInvoicingPlugin\Validator\Constraints\VatNumberValidator
Parameters you can override in your parameters.yml(.dist) file
parameters: wkhtmltopdf_binary_path: /usr/local/bin/wkhtmltopdf invoices_root_dir: "%kernel.project_dir%/var/invoices"
Testing
$ composer install $ cd tests/Application $ yarn install $ yarn run gulp $ bin/console assets:install web -e test $ bin/console doctrine:schema:create -e test $ bin/console server:run 127.0.0.1:8080 -d web -e test $ open http://localhost:8080 $ bin/behat $ bin/phpspec run
Contribution
Learn more about our contribution workflow on http://docs.sylius.org/en/latest/contributing/.