]>
Commit | Line | Data |
---|---|---|
41b9d8ec | 1 | package Product; |
15fb10f2 | 2 | use strict; |
41b9d8ec TC |
3 | # represents a product from the database |
4 | use Article; | |
5 | use vars qw/@ISA/; | |
6 | @ISA = qw/Article/; | |
7 | ||
af74f0b4 TC |
8 | # subscription_usage values |
9 | use constant SUBUSAGE_START_ONLY => 1; | |
10 | use constant SUBUSAGE_RENEW_ONLY => 2; | |
11 | use constant SUBUSAGE_EITHER => 3; | |
12 | ||
41b9d8ec TC |
13 | sub columns { |
14 | return ($_[0]->SUPER::columns(), | |
0ec4ac8a TC |
15 | qw/articleId summary leadTime retailPrice wholesalePrice gst options |
16 | subscription_id subscription_period subscription_usage | |
17 | subscription_required/ ); | |
41b9d8ec TC |
18 | } |
19 | ||
20 | sub bases { | |
21 | return { articleId=>{ class=>'Article'} }; | |
22 | } | |
23 | ||
0ec4ac8a TC |
24 | sub subscription_required { |
25 | my ($self) = @_; | |
26 | ||
27 | my $id = $self->{subscription_required}; | |
28 | return if $id == -1; | |
29 | ||
30 | require BSE::TB::Subscriptions; | |
31 | return BSE::TB::Subscriptions->getByPkey($id); | |
32 | } | |
33 | ||
4175638b TC |
34 | sub subscription { |
35 | my ($self) = @_; | |
36 | ||
37 | my $id = $self->{subscription_id}; | |
38 | return if $id == -1; | |
39 | ||
40 | require BSE::TB::Subscriptions; | |
41 | return BSE::TB::Subscriptions->getByPkey($id); | |
42 | } | |
43 | ||
af74f0b4 TC |
44 | sub is_renew_sub_only { |
45 | my ($self) = @_; | |
46 | ||
47 | $self->{subscription_usage} == SUBUSAGE_RENEW_ONLY; | |
48 | } | |
49 | ||
50 | sub is_start_sub_only { | |
51 | my ($self) = @_; | |
52 | ||
53 | $self->{subscription_usage} == SUBUSAGE_START_ONLY; | |
54 | } | |
55 | ||
0eb78304 TC |
56 | sub _get_prod_options { |
57 | my ($product, $cfg, @values) = @_; | |
58 | ||
59 | require BSE::CfgInfo; | |
60 | my $avail_options = BSE::CfgInfo::product_options($cfg); | |
61 | my @opt_names = split /,/, $product->{options}; | |
62 | push @values, '' while @values < @opt_names; | |
63 | my %values; | |
64 | @values{@opt_names} = @values; | |
65 | ||
66 | my @sem_options = map | |
67 | +{ | |
68 | id => $_, | |
69 | %{$avail_options->{$_}}, | |
70 | value => $values{$_}, | |
71 | }, @opt_names; | |
72 | for my $option (@sem_options) { | |
73 | $option->{display} = $option->{labels}{$option->{value}}; | |
74 | } | |
75 | ||
76 | return @sem_options; | |
77 | } | |
78 | ||
79 | sub option_descs { | |
80 | my ($self, $cfg, $rvalues) = @_; | |
81 | ||
82 | $rvalues or $rvalues = [ ]; | |
83 | ||
84 | return $self->_get_prod_options($cfg, @$rvalues); | |
85 | } | |
86 | ||
41b9d8ec | 87 | 1; |