Invoice¶
Architecture¶
For more information about our position regarding the invoice architecture, you can read: Invoice.
Presentation¶
The SonataInvoiceBundle
manages everything related to the invoices: it basically implements the Invoice components by offering DB entities, and an Admin page to view the invoices in the Back end. It also offers the possibility to view a generated Invoice from the front office with a specific template.
The Invoice generation, however, is not processed by this specific bundle, but by the PaymentBundle
, as are all other entity transformations.
Configuration¶
The bundle allows you to configure the entity classes; you’ll also need to register the Doctrine mapping.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | sonata_invoice:
class:
invoice: App\Sonata\InvoiceBundle\Entity\Invoice
invoice_element: App\Sonata\InvoiceBundle\Entity\InvoiceElement
order_element: App\Sonata\OrderBundle\Entity\OrderElement
customer: App\Sonata\CustomerBundle\Entity\Customer
# Enable Doctrine to map the provided entities
doctrine:
orm:
entity_managers:
default:
mappings:
ApplicationSonataInvoiceBundle: ~
SonataInvoiceBundle: ~
|
Transformer¶
Default Order to Invoice transformer is provided in Sonata\Component\Transformer\InvoiceTransformer::transformFromOrder
; service id is sonata.payment.transformer.invoice
and you can override it by setting its class name parameter (sonata.invoice_transformer.class
).
Currently, a raw HTML representation for invoices is provided; would you like to generate a PDF ? We encourage you to check out PDF generation bundles taking HTML as inputs.
The invoice rendering template is SonataInvoiceBundle:Invoice:view.html.twig
; you can override it by using Symfony bundle override rules.