improved invoices with new renderer (#306)

* added docx renderer and demo template
* added csv renderer and demo template
* added xlsx renderer and demo template
* added ods renderer and demo template
* added user calculator
* added invoice documentation
This commit is contained in:
Kevin Papst
2018-09-21 01:27:56 +02:00
committed by GitHub
parent b035fc9ebd
commit 53f82a808b
121 changed files with 4094 additions and 770 deletions

View File

@@ -39,16 +39,17 @@ class InvoiceCalculatorType extends AbstractType
public function configureOptions(OptionsResolver $resolver)
{
$renderer = [];
foreach ($this->service->getCalculator() as $name => $class) {
$renderer[$name] = $name;
foreach ($this->service->getCalculator() as $calculator) {
$renderer[$calculator->getId()] = $calculator->getId();
}
$resolver->setDefaults([
'label' => 'label.invoice_calculator',
'choices' => $renderer,
'choice_label' => function ($renderer) {
return 'invoice_calculator.' . $renderer;
}
return $renderer;
},
'translation_domain' => 'invoice-calculator',
]);
}

View File

@@ -39,16 +39,17 @@ class InvoiceNumberGeneratorType extends AbstractType
public function configureOptions(OptionsResolver $resolver)
{
$renderer = [];
foreach ($this->service->getNumberGenerator() as $name => $class) {
$renderer[$name] = $name;
foreach ($this->service->getNumberGenerator() as $generator) {
$renderer[$generator->getId()] = $generator->getId();
}
$resolver->setDefaults([
'label' => 'label.invoice_number_generator',
'choices' => $renderer,
'choice_label' => function ($renderer) {
return 'invoice_number_generator.' . $renderer;
}
return $renderer;
},
'translation_domain' => 'invoice-numbergenerator',
]);
}

View File

@@ -38,20 +38,46 @@ class InvoiceRendererType extends AbstractType
*/
public function configureOptions(OptionsResolver $resolver)
{
$renderer = [];
foreach ($this->service->getRenderer() as $name => $action) {
$renderer[$name] = $name;
$documents = [];
foreach ($this->service->getDocuments() as $document) {
foreach ($this->service->getRenderer() as $renderer) {
if ($renderer->supports($document)) {
$documents[$document->getId()] = $document->getName();
}
}
}
$resolver->setDefaults([
'label' => 'label.invoice_renderer',
'choices' => $renderer,
'choice_label' => function ($renderer) {
return 'invoice_renderer.' . $renderer;
}
'choices' => array_flip($documents),
'group_by' => [$this, 'getGroupBy'],
'choice_label' => function ($choiceValue, $key, $value) {
return $choiceValue;
},
'translation_domain' => 'invoice-renderer',
'docu_chapter' => 'invoices',
]);
}
/**
* @param string $value
* @param string $label
* @param string $index
* @return string
*/
public function getGroupBy($value, $label, $index)
{
$renderer = $label;
return ucfirst(
substr(
$renderer,
1 + strrpos($renderer, '.'),
strrpos($renderer, '.')
)
);
}
/**
* {@inheritdoc}
*/