rounding rules via admin screen, round begin when starting record (#1229)
This commit is contained in:
@@ -11,6 +11,7 @@ namespace App\Form\Model;
|
||||
|
||||
class SystemConfiguration
|
||||
{
|
||||
public const SECTION_ROUNDING = 'rounding';
|
||||
public const SECTION_TIMESHEET = 'timesheet';
|
||||
public const SECTION_FORM_CUSTOMER = 'form_customer';
|
||||
public const SECTION_FORM_USER = 'form_user';
|
||||
|
||||
56
src/Form/Type/RoundingModeType.php
Normal file
56
src/Form/Type/RoundingModeType.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?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\Form\Type;
|
||||
|
||||
use App\Timesheet\RoundingService;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
|
||||
/**
|
||||
* Custom form field type to select the timesheet mode.
|
||||
*/
|
||||
class RoundingModeType extends AbstractType
|
||||
{
|
||||
/**
|
||||
* @var RoundingService
|
||||
*/
|
||||
private $service;
|
||||
|
||||
public function __construct(RoundingService $service)
|
||||
{
|
||||
$this->service = $service;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function configureOptions(OptionsResolver $resolver)
|
||||
{
|
||||
$choices = [];
|
||||
|
||||
foreach ($this->service->getRoundingModes() as $mode) {
|
||||
$id = $mode->getId();
|
||||
$choices[ucfirst($id)] = $id;
|
||||
}
|
||||
|
||||
$resolver->setDefaults([
|
||||
'choices' => $choices,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getParent()
|
||||
{
|
||||
return ChoiceType::class;
|
||||
}
|
||||
}
|
||||
63
src/Form/Type/WeekDaysType.php
Normal file
63
src/Form/Type/WeekDaysType.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?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\Form\Type;
|
||||
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\CallbackTransformer;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
|
||||
/**
|
||||
* Custom form field type to select weekdays.
|
||||
*/
|
||||
class WeekDaysType extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder->addModelTransformer(new CallbackTransformer(
|
||||
function ($weekdays) {
|
||||
return explode(',', $weekdays);
|
||||
},
|
||||
function ($weekdays) {
|
||||
return implode(',', $weekdays);
|
||||
}
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function configureOptions(OptionsResolver $resolver)
|
||||
{
|
||||
$choices = [
|
||||
'Monday' => 'monday',
|
||||
'Tuesday' => 'tuesday',
|
||||
'Wednesday' => 'wednesday',
|
||||
'Thursday' => 'thursday',
|
||||
'Friday' => 'friday',
|
||||
'Saturday' => 'saturday',
|
||||
'Sunday' => 'sunday'
|
||||
];
|
||||
|
||||
$resolver->setDefaults([
|
||||
'multiple' => true,
|
||||
'choices' => $choices,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getParent()
|
||||
{
|
||||
return ChoiceType::class;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user