# --
# Copyright (C) 2001-2019 OTRS AG, https://otrs.com/
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (GPL). If you
# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
# --
package Kernel::System::ITSMConfigItem::Number::AutoIncrement;
use strict;
use warnings;
our $ObjectManagerDisabled = 1;
=head1 NAME
Kernel::System::ITSMConfigItem::Number::AutoIncrement - config item number backend module
=head1 DESCRIPTION
All auto increment config item number functions
=head2 _ConfigItemNumberCreate()
create a new config item number
my $Number = $BackendObject->_ConfigItemNumberCreate(
ClassID => 123,
);
=cut
sub _ConfigItemNumberCreate {
my ( $Self, %Param ) = @_;
# check needed stuff
if ( !$Param{ClassID} ) {
$Kernel::OM->Get('Kernel::System::Log')->Log(
Priority => 'error',
Message => 'Need ClassID!',
);
return;
}
# get system id
my $SystemID = $Kernel::OM->Get('Kernel::Config')->Get('SystemID');
# get current counter
my $CurrentCounter = $Self->CurrentCounterGet(
ClassID => $Param{ClassID},
Type => 'AutoIncrement',
) || 0;
CIPHER:
for my $Cipher ( 1 .. 1_000_000_000 ) {
# create new number
my $Number = $SystemID . $Param{ClassID} . sprintf( "%06d", ( $CurrentCounter + $Cipher ) );
# find existing number
my $Duplicate = $Self->ConfigItemNumberLookup(
ConfigItemNumber => $Number,
);
next CIPHER if $Duplicate;
# set counter
$Self->CurrentCounterSet(
ClassID => $Param{ClassID},
Type => 'AutoIncrement',
Counter => ( $CurrentCounter + $Cipher ),
);
return $Number;
}
return;
}
1;
=head1 TERMS AND CONDITIONS
This software is part of the OTRS project (L).
This software comes with ABSOLUTELY NO WARRANTY. For details, see
the enclosed file COPYING for license information (GPL). If you
did not receive this file, see L.
=cut