Revision 15b8d4bb
Von Jan Büren vor etwa 5 Jahren hinzugefügt
SL/BackgroundJob/SetNumberRange.pm | ||
---|---|---|
1 |
package SL::BackgroundJob::SetNumberRange; |
|
2 |
|
|
3 |
use strict; |
|
4 |
|
|
5 |
use parent qw(SL::BackgroundJob::Base); |
|
6 |
|
|
7 |
use SL::PrefixedNumber; |
|
8 |
|
|
9 |
use DateTime::Format::Strptime; |
|
10 |
|
|
11 |
sub create_job { |
|
12 |
$_[0]->create_standard_job('59 23 31 12 *'); # one minute before new year |
|
13 |
} |
|
14 |
|
|
15 |
|
|
16 |
sub run { |
|
17 |
my ($self, $db_obj) = @_; |
|
18 |
my $data = $db_obj->data_as_hash; |
|
19 |
|
|
20 |
my $next_year = DateTime->today_local->truncate(to => 'year')->add(years => 1)->year(); |
|
21 |
$next_year = ($data->{digits_year} == 2) ? substr($next_year, 2, 2) : $next_year; |
|
22 |
my $multiplier = $data->{multiplier} || 1; |
|
23 |
|
|
24 |
my $defaults = SL::DB::Default->get; |
|
25 |
|
|
26 |
foreach (qw(invnumber cnnumber sonumber ponumber sqnumber rfqnumber sdonumber pdonumber)) { |
|
27 |
my $current_number = SL::PrefixedNumber->new(number => $defaults->{$_}); |
|
28 |
$current_number->set_to($next_year * $multiplier); |
|
29 |
$defaults->{$_} = $current_number->get_current; |
|
30 |
} |
|
31 |
$defaults->save() || die "Could not change number ranges"; |
|
32 |
|
|
33 |
return exists $data->{result} ? $data->{result} : 1; |
|
34 |
} |
|
35 |
|
|
36 |
1; |
Auch abrufbar als: Unified diff
SetNumberRange: Background-Job um Jahreszahlen im Nummernkreis zu erhöhen
Nimmt die vierstellige Zahl des nächsten Jahres und multipliziert
diese mit 1 oder einem anderen Faktor. Präfixe und Länge des
Nummernkreis bleibt erhalten. Bspw.:
Letzte Rechnungsnummer:
RE201900009 --> RE202000000
Folgende Werte:
multiplier: 100000
digits_year: 4
multiplier: beliebiger Wert (empfohlen: 1, 10, 100, 1000, default 1)
digits_year: 4 || 2 (Falls keine 2 gesetzt ist, wird 4 verwendet)
2019 || 19