[otrs-cvs] otrs/Kernel/Modules AdminCustomerUser.pm, 1.46, 1.47 AdminCustomerCompany.pm, NONE, 1.1

cvs-log at otrs.org cvs-log at otrs.org
Mon Apr 2 13:13:20 GMT 2007


Comments:
Update of /home/cvs/otrs/Kernel/Modules
In directory lancelot:/tmp/cvs-serv2644/Kernel/Modules

Modified Files:
	AdminCustomerUser.pm 
Added Files:
	AdminCustomerCompany.pm 
Log Message:
Added customer company feature (split of contact and company infos). Need to be activated in CustomerUser config (see Kernel/Config/Defaults.pm).

Author: martin

Index: AdminCustomerUser.pm
===================================================================
RCS file: /home/cvs/otrs/Kernel/Modules/AdminCustomerUser.pm,v
retrieving revision 1.46
retrieving revision 1.47
diff -C2 -d -r1.46 -r1.47
*** AdminCustomerUser.pm	21 Mar 2007 11:12:05 -0000	1.46
--- AdminCustomerUser.pm	2 Apr 2007 13:13:15 -0000	1.47
***************
*** 14,17 ****
--- 14,18 ----
  use strict;
  use Kernel::System::CustomerUser;
+ use Kernel::System::CustomerCompany;
  use Kernel::System::Valid;
  
***************
*** 40,43 ****
--- 41,45 ----
      }
      $Self->{CustomerUserObject} = Kernel::System::CustomerUser->new(%Param);
+     $Self->{CustomerCompanyObject} = Kernel::System::CustomerCompany->new(%Param);
      $Self->{ValidObject} = Kernel::System::Valid->new(%Param);
  
***************
*** 472,475 ****
--- 474,483 ----
      );
      # build source string
+     $Param{'CompanyOption'} = $Self->{LayoutObject}->OptionStrgHashRef(
+         Data => {$Self->{CustomerCompanyObject}->CustomerCompanyList()},
+         Name => 'CustomerID',
+         SelectedID => $Param{CustomerID},
+     );
+     # build source string
      $Param{'SourceOption'} = $Self->{LayoutObject}->OptionStrgHashRef(
          Data => {$Self->{CustomerUserObject}->CustomerSourceList()},
***************
*** 498,502 ****
              # build selections or input fields
              if ($Self->{ConfigObject}->Get($Param{Source})->{Selections}->{$Entry->[0]}) {
-                 # build ValidID string
                  $Block = 'Option';
                  $Param{Option} = $Self->{LayoutObject}->OptionStrgHashRef(
--- 506,509 ----
***************
*** 519,522 ****
--- 526,546 ----
                  );
              }
+             elsif ($Entry->[0] =~ /^UserCustomerID/i &&
+                 $Self->{ConfigObject}->Get($Param{Source})->{CustomerCompanySupport}) {
+                 my %Company = ();
+                 my %CompanyList = ($Self->{CustomerCompanyObject}->CustomerCompanyList(), '' => '-');
+                 if ($Param{$Entry->[0]}) {
+                     %Company = $Self->{CustomerCompanyObject}->CustomerCompanyGet(CustomerID => $Param{$Entry->[0]});
+                     if (!%Company) {
+                         $CompanyList{$Param{$Entry->[0]}} = $Param{$Entry->[0]}. ' (-)';
+                     }
+                 }
+                 $Block = 'Option';
+                 $Param{Option} = $Self->{LayoutObject}->OptionStrgHashRef(
+                     Data => \%CompanyList,
+                     Name => $Entry->[0],
+                     SelectedID => $Param{$Entry->[0]},
+                 );
+             }
              else {
                  $Param{Value} = $Param{$Entry->[0]} || '';

Author: martin

--- NEW FILE: AdminCustomerCompany.pm ---
# --
# Kernel/Modules/AdminCustomerCompany.pm - to add/update/delete system addresses
# Copyright (C) 2001-2007 OTRS GmbH, http://otrs.org/
# --
# $Id: AdminCustomerCompany.pm,v 1.1 2007/04/02 13:13:15 martin Exp $
# --
# 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 http://www.gnu.org/licenses/gpl.txt.
# --

package Kernel::Modules::AdminCustomerCompany;

use strict;
use Kernel::System::CustomerCompany;
use Kernel::System::Valid;

use vars qw($VERSION);
$VERSION = '$Revision: 1.1 $';
$VERSION =~ s/^\$.*:\W(.*)\W.+?$/$1/;

sub new {
    my $Type = shift;
    my %Param = @_;

    # allocate new hash for object
    my $Self = {};
    bless ($Self, $Type);

    # allocate new hash for objects
    foreach (keys %Param) {
        $Self->{$_} = $Param{$_};
    }

    # check all needed objects
    foreach (qw(ParamObject DBObject LayoutObject ConfigObject LogObject)) {
        if (!$Self->{$_}) {
            $Self->{LayoutObject}->FatalError(Message => "Got no $_!");
        }
    }
    $Self->{CustomerCompanyObject} = Kernel::System::CustomerCompany->new(%Param);
    $Self->{ValidObject} = Kernel::System::Valid->new(%Param);

    return $Self;
}

sub Run {
    my $Self = shift;
    my %Param = @_;

    # ------------------------------------------------------------ #
    # change
    # ------------------------------------------------------------ #
    if ($Self->{Subaction} eq 'Change') {
        my $CustomerID = $Self->{ParamObject}->GetParam(Param => 'CustomerID') || '';
        my %Data = $Self->{CustomerCompanyObject}->CustomerCompanyGet(
            CustomerID => $CustomerID,
        );
        my $Output = $Self->{LayoutObject}->Header();
        $Output .= $Self->{LayoutObject}->NavigationBar();
        $Self->_Edit(
            Action => "Change",
            %Data,
        );
        $Output .= $Self->{LayoutObject}->Output(
            TemplateFile => 'AdminCustomerCompanyForm',
            Data => \%Param,
        );
        $Output .= $Self->{LayoutObject}->Footer();
        return $Output;
    }
    # ------------------------------------------------------------ #
    # change action
    # ------------------------------------------------------------ #
    elsif ($Self->{Subaction} eq 'ChangeAction') {
        my $Note = '';
        my %GetParam;
        foreach my $Entry (@{$Self->{ConfigObject}->Get('CustomerCompany')->{Map}}) {
            $GetParam{$Entry->[0]} = $Self->{ParamObject}->GetParam(Param => $Entry->[0]) || '';
        }
        foreach (qw(CustomerID)) {
            $GetParam{$_} = $Self->{ParamObject}->GetParam(Param => $_) || '';
        }
        # update group
        if ($Self->{CustomerCompanyObject}->CustomerCompanyUpdate(%GetParam, UserID => $Self->{UserID})) {
            $Self->_Overview();
            my $Output = $Self->{LayoutObject}->Header();
            $Output .= $Self->{LayoutObject}->NavigationBar();
            $Output .= $Self->{LayoutObject}->Notify(Info => 'Updated!');
            $Output .= $Self->{LayoutObject}->Output(
                TemplateFile => 'AdminCustomerCompanyForm',
                Data => \%Param,
            );
            $Output .= $Self->{LayoutObject}->Footer();
            return $Output;
        }
        else {
            my $Output = $Self->{LayoutObject}->Header();
            $Output .= $Self->{LayoutObject}->NavigationBar();
            $Output .= $Self->{LayoutObject}->Notify(Priority => 'Error');
            $Self->_Edit(
                Action => "Change",
                %GetParam,
            );
            $Output .= $Self->{LayoutObject}->Output(
                TemplateFile => 'AdminCustomerCompanyForm',
                Data => \%Param,
            );
            $Output .= $Self->{LayoutObject}->Footer();
            return $Output;
        }
    }
    # ------------------------------------------------------------ #
    # add
    # ------------------------------------------------------------ #
    elsif ($Self->{Subaction} eq 'Add') {
        my %GetParam = ();
        foreach (qw(Name)) {
            $GetParam{$_} = $Self->{ParamObject}->GetParam(Param => $_);
        }
        my $Output = $Self->{LayoutObject}->Header();
        $Output .= $Self->{LayoutObject}->NavigationBar();
        $Self->_Edit(
            Action => "Add",
            %GetParam,
        );
        $Output .= $Self->{LayoutObject}->Output(
            TemplateFile => 'AdminCustomerCompanyForm',
            Data => \%Param,
        );
        $Output .= $Self->{LayoutObject}->Footer();
        return $Output;
    }
    # ------------------------------------------------------------ #
    # add action
    # ------------------------------------------------------------ #
    elsif ($Self->{Subaction} eq 'AddAction') {
        my $Note = '';
        my %GetParam;
        foreach my $Entry (@{$Self->{ConfigObject}->Get('CustomerCompany')->{Map}}) {
            $GetParam{$Entry->[0]} = $Self->{ParamObject}->GetParam(Param => $Entry->[0]) || '';
        }
        # add user
        if (my $AddressID = $Self->{CustomerCompanyObject}->CustomerCompanyAdd(%GetParam, UserID => $Self->{UserID})) {
            $Self->_Overview();
            my $Output = $Self->{LayoutObject}->Header();
            $Output .= $Self->{LayoutObject}->NavigationBar();
            $Output .= $Self->{LayoutObject}->Notify(Info => 'Added!');
            $Output .= $Self->{LayoutObject}->Output(
                TemplateFile => 'AdminCustomerCompanyForm',
                Data => \%Param,
            );
            $Output .= $Self->{LayoutObject}->Footer();
            return $Output;
        }
        else {
            my $Output = $Self->{LayoutObject}->Header();
            $Output .= $Self->{LayoutObject}->NavigationBar();
            $Output .= $Self->{LayoutObject}->Notify(Priority => 'Error');
            $Self->_Edit(
                Action => "Add",
                %GetParam,
            );
            $Output .= $Self->{LayoutObject}->Output(
                TemplateFile => 'AdminCustomerCompanyForm',
                Data => \%Param,
            );
            $Output .= $Self->{LayoutObject}->Footer();
            return $Output;
        }
    }
    # ------------------------------------------------------------
    # overview
    # ------------------------------------------------------------
    else {
        $Self->_Overview();
        my $Output = $Self->{LayoutObject}->Header();
        $Output .= $Self->{LayoutObject}->NavigationBar();
        $Output .= $Self->{LayoutObject}->Output(
            TemplateFile => 'AdminCustomerCompanyForm',
            Data => \%Param,
        );
        $Output .= $Self->{LayoutObject}->Footer();
        return $Output;
    }

}

sub _Edit {
    my $Self = shift;
    my %Param = @_;

    $Self->{LayoutObject}->Block(
        Name => 'Overview',
        Data => \%Param,
    );
    $Self->{LayoutObject}->Block(
        Name => 'OverviewUpdate',
        Data => \%Param,
    );
    $Param{'ValidOption'} = $Self->{LayoutObject}->OptionStrgHashRef(
        Data => {
            $Self->{ValidObject}->ValidList(),
        },
        Name => 'ValidID',
        SelectedID => $Param{ValidID},
    );
    $Param{'QueueOption'} = $Self->{LayoutObject}->AgentQueueListOption(
        Data => {
            $Self->{DBObject}->GetTableData(
                What => 'id, name',
                Table => 'queue',
                Valid => 1,
            )
        },
        Name => 'QueueID',
        SelectedID => $Param{QueueID},
        OnChangeSubmit => 0,
    );
    foreach my $Entry (@{$Self->{ConfigObject}->Get('CustomerCompany')->{Map}}) {
        if ($Entry->[0]) {
            my $Block = 'Input';
            # build selections or input fields
            if ($Self->{ConfigObject}->Get('CustomerCompany')->{Selections}->{$Entry->[0]}) {
                # build ValidID string
                $Block = 'Option';
                $Param{Option} = $Self->{LayoutObject}->OptionStrgHashRef(
                    Data => $Self->{ConfigObject}->Get('CustomerCompany')->{Selections}->{$Entry->[0]},
                    Name => $Entry->[0],
                    LanguageTranslation => 0,
                    SelectedID => $Param{$Entry->[0]},
                    Max => 35,
                );

            }
            elsif ($Entry->[0] =~ /^ValidID/i) {
                # build ValidID string
                $Block = 'Option';
                $Param{Option} = $Self->{LayoutObject}->OptionStrgHashRef(
                    Data => {
                        $Self->{ValidObject}->ValidList(),
                    },
                    Name => $Entry->[0],
                    SelectedID => defined ($Param{$Entry->[0]}) ? $Param{$Entry->[0]} : 1,
                );
            }
            else {
                $Param{Value} = $Param{$Entry->[0]} || '';
            }
            # show required flag
            if ($Entry->[4]) {
                $Param{Required} = '*';
            }
            else {
                $Param{Required} = '';
            }
            # add form option
            if ($Param{Type} && $Param{Type} eq 'hidden') {
                $Param{Preferences} .= $Param{Value};
            }
            else {
                $Self->{LayoutObject}->Block(
                    Name => 'PreferencesGeneric',
                    Data => { Item => $Entry->[1], %Param},
                );
                $Self->{LayoutObject}->Block(
                    Name => "PreferencesGeneric$Block",
                    Data => {
                        %Param,
                        Item => $Entry->[1],
                        Name => $Entry->[0],
                        Value => $Param{$Entry->[0]},
                    },
                );
            }
        }
    }
    return 1;
}

sub _Overview {
    my $Self = shift;
    my %Param = @_;
    my $Output = '';

    $Self->{LayoutObject}->Block(
        Name => 'Overview',
        Data => \%Param,
    );
    $Self->{LayoutObject}->Block(
        Name => 'OverviewResult',
        Data => \%Param,
    );
    my %List = $Self->{CustomerCompanyObject}->CustomerCompanyList(
        Valid => 0,
    );
    # get valid list
    my %ValidList = $Self->{ValidObject}->ValidList();
    my $CssClass = '';
    foreach (sort {$List{$a} cmp $List{$b}}  keys %List) {
        # set output class
        if ($CssClass && $CssClass eq 'searchactive') {
            $CssClass = 'searchpassive';
        }
        else {
            $CssClass = 'searchactive';
        }
        my %Data = $Self->{CustomerCompanyObject}->CustomerCompanyGet(
            CustomerID => $_,
        );
        $Self->{LayoutObject}->Block(
            Name => 'OverviewResultRow',
            Data => {
                Valid => $ValidList{$Data{ValidID}},
                CssClass => $CssClass,
                %Data,
            },
        );
    }
    return 1;
}

1;


More information about the cvs-log mailing list