Files
kimai2/src/DataFixtures/InvoiceFixtures.php
Kevin Papst 0e91dd886e release 2.0 beta 2 (#3757)
* do not traverse into invoice template subdirectories (#3735)
* fix security open api definition
* fix currency can be null, removed fluent interface
* merged release 1.30.3
* allow to pre-fill timesheet metafields via URL
* fix api description
* added test accounts with simpler names and password
* upgrade to Symfony 6.2
* removed FrameworkExtraBundle (by Sensio) and replaced with new native SF annotations
* fixed symfony 6.2 deprecations
* fixed #3768
2023-01-18 14:47:48 +01:00

121 lines
4.6 KiB
PHP

<?php
/*
* This file is part of the Kimai time-tracking app.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace App\DataFixtures;
use App\Entity\InvoiceTemplate;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
use Faker\Factory;
use Faker\Generator;
/**
* Defines the sample data to load in the database when running the unit and
* functional tests or while development.
*
* Execute this command to load the data:
* $ php bin/console doctrine:fixtures:load
*
* @codeCoverageIgnore
*/
final class InvoiceFixtures extends Fixture
{
public function load(ObjectManager $manager): void
{
$faker = Factory::create('en_US');
foreach ($this->getInvoiceConfigs($faker) as $invoiceConfig) {
// name, title, renderer, calculator, numberGenerator, company, vat, dueDays, address, paymentTerms
$template = new InvoiceTemplate();
$template->setName($invoiceConfig[0]);
$template->setTitle($invoiceConfig[1]);
$template->setRenderer($invoiceConfig[2]);
$template->setCalculator($invoiceConfig[3]);
$template->setNumberGenerator($invoiceConfig[4]);
$template->setCompany($invoiceConfig[5]);
$template->setVat($invoiceConfig[6]);
$template->setDueDays($invoiceConfig[7]);
$template->setPaymentTerms($invoiceConfig[8]);
$template->setLanguage('en');
$template->setAddress($this->generateAddress($faker));
$template->setContact($this->generateContact($faker));
$template->setPaymentDetails($this->generatePaymentDetails($faker));
$template->setVatId($faker->creditCardNumber());
$manager->persist($template);
$manager->flush();
}
}
/**
* @param Generator $faker
* @return array
*/
private function getInvoiceConfigs(Generator $faker): array
{
$paymentTerms =
'I would like to thank you for your confidence and will gladly be there for you in the future.' .
PHP_EOL .
'Please transfer the total amount within 14 days to the given account and use the invoice number ' .
'as reference.'
;
$paymentTerms_alt =
$faker->firstName() . ', thank you very much. We really appreciate your business.' . PHP_EOL .
'Please send payments before the due date. I would like to thank you for your confidence and will gladly be there for you in the future.'
;
$paymentTerms_de =
'Bitte überweisen Sie den Gesamtbetrag innerhalb von 14 Tagen nach Erhalt der Rechnung auf das unten genannte Konto. Verwenden Sie bitte als Betreff Ihrer Überweisung die Rechnungsnummer.' .
PHP_EOL .
PHP_EOL .
'Ich bedanke mich für das entgegengebrachte Vertrauen. Gerne bin ich auch künftig für Sie da.' .
PHP_EOL .
PHP_EOL .
'Mit freundlichen Grüßen,' .
PHP_EOL .
'Max Müller'
;
// name, title, renderer, calculator, numberGenerator, company, vat, dueDays, address, paymentTerms
return [
['Default (PDF)', 'Invoice', 'default', 'default', 'default', $faker->company(), 16, 10, $paymentTerms],
['Invoice (HTML)', 'Company name', 'invoice', 'default', 'default', $faker->company(), 19, 30, $paymentTerms],
['Single service date (PDF)', 'Invoice', 'service-date', 'short', 'default', $faker->company(), 19, 14, $paymentTerms_de],
['Timesheet (HTML)', 'Timesheet', 'timesheet', 'default', 'default', $faker->company(), 19, 7, $paymentTerms_alt],
];
}
private function generatePaymentDetails(Generator $faker): string
{
return
'Acme Bank' . PHP_EOL .
'BIC: ' . $faker->swiftBicNumber() . PHP_EOL .
'IBAN: ' . $faker->iban('DE')
;
}
private function generateContact(Generator $faker): string
{
return
'Phone: ' . $faker->phoneNumber() . PHP_EOL .
'Email: ' . $faker->safeEmail() . PHP_EOL .
'Web: www.' . $faker->domainName()
;
}
private function generateAddress(Generator $faker): string
{
return
$faker->streetAddress() . PHP_EOL .
$faker->postcode() . ' ' . $faker->city() . ', ' . $faker->country()
;
}
}