kivitendo/SL/BackgroundJob/SetNumberRange.pm @ 7b1da9c3
15b8d4bb | Jan Büren | package SL::BackgroundJob::SetNumberRange;
|
||
use strict;
|
||||
use parent qw(SL::BackgroundJob::Base);
|
||||
use SL::PrefixedNumber;
|
||||
use DateTime::Format::Strptime;
|
||||
sub create_job {
|
||||
$_[0]->create_standard_job('59 23 31 12 *'); # one minute before new year
|
||||
}
|
||||
sub run {
|
||||
my ($self, $db_obj) = @_;
|
||||
my $data = $db_obj->data_as_hash;
|
||||
fbc3a76f | Jan Büren | if ($data->{digits_year} && !($data->{digits_year} == 2 || $data->{digits_year} == 4)) {
|
||
die "No valid input for digits_year should be 2 or 4.";
|
||||
}
|
||||
if ($data->{multiplier} && !($data->{multiplier} % 10 == 0)) {
|
||||
die "No valid input for multiplier should be 10, 100, .., 1000000";
|
||||
}
|
||||
15b8d4bb | Jan Büren | my $next_year = DateTime->today_local->truncate(to => 'year')->add(years => 1)->year();
|
||
$next_year = ($data->{digits_year} == 2) ? substr($next_year, 2, 2) : $next_year;
|
||||
fbc3a76f | Jan Büren | my $multiplier = $data->{multiplier} || 100;
|
||
15b8d4bb | Jan Büren | |||
my $defaults = SL::DB::Default->get;
|
||||
1b9948c2 | Bernd Bleßmann | foreach (qw(invnumber cnnumber soinumber pqinumber sonumber ponumber pocnumber sqnumber rfqnumber sdonumber pdonumber)) {
|
||
15b8d4bb | Jan Büren | my $current_number = SL::PrefixedNumber->new(number => $defaults->{$_});
|
||
$current_number->set_to($next_year * $multiplier);
|
||||
$defaults->{$_} = $current_number->get_current;
|
||||
}
|
||||
$defaults->save() || die "Could not change number ranges";
|
||||
return exists $data->{result} ? $data->{result} : 1;
|
||||
}
|
||||
1;
|