-
Notifications
You must be signed in to change notification settings - Fork 27
/
accounting.coretag
76 lines (66 loc) · 1.59 KB
/
accounting.coretag
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# Copyright 2002 Interchange Development Group (http://www.icdevgroup.org/)
# Licensed under the GNU GPL v2. See file LICENSE for details.
# $Id: accounting.coretag,v 1.3 2005-02-09 13:39:41 docelic Exp $
UserTag accounting Order function
UserTag accounting addAttr
UserTag accounting Version $Revision: 1.3 $
UserTag accounting Routine <<EOR
my %account_super = (qw/
noparts_update 1
/);
my %account_admin = (qw/
inventory_update 1
/);
sub {
my ($func, $opt) = @_;
use vars qw/$Tag/;
die "Accounting not enabled!"
unless $Vend::Cfg->{Accounting};
my $enable;
if($account_super{$func}) {
eval {
$enable = $Vend::admin && $Tag->if_mm('super');
};
}
elsif($account_admin{$func}) {
$enable = $Vend::admin;
}
else {
$enable = 1;
}
if(! $enable) {
die errmsg("Function '%s' not enabled for current user level.", $func);
}
if(my $sys = $opt->{system}) {
my $former = $Vend::Cfg->{Accounting};
$Vend::Cfg->{Accounting} = $Vend::Cfg->{Accounting_repository}{$sys}
or do {
logError(
"Failed to change accounting system to %s, returning to %s.",
$opt->{system},
$former->{Class},
);
$Vend::Cfg->{Accounting} = $former;
return undef;
};
}
my $a = $Vend::Cfg->{Accounting}
or do {
logError("No accounting system present. Aborting.");
return undef;
};
my $class = $a->{Class};
my $self = new $class;
my $can;
unless( $can = $self->can($func) ) {
logError(
"No function '%s' in accounting system %s. Aborting.",
$func,
$class,
);
return undef;
}
return $can if $opt->{can_do_function};
return $self->$func($opt);
}
EOR