]> git.imager.perl.org - bse.git/blame - site/cgi-bin/modules/Product.pm
0.15_48 commit
[bse.git] / site / cgi-bin / modules / Product.pm
CommitLineData
41b9d8ec 1package Product;
15fb10f2 2use strict;
41b9d8ec
TC
3# represents a product from the database
4use Article;
5use vars qw/@ISA/;
6@ISA = qw/Article/;
7
af74f0b4
TC
8# subscription_usage values
9use constant SUBUSAGE_START_ONLY => 1;
10use constant SUBUSAGE_RENEW_ONLY => 2;
11use constant SUBUSAGE_EITHER => 3;
12
41b9d8ec
TC
13sub 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
20sub bases {
21 return { articleId=>{ class=>'Article'} };
22}
23
0ec4ac8a
TC
24sub 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
34sub 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
44sub is_renew_sub_only {
45 my ($self) = @_;
46
47 $self->{subscription_usage} == SUBUSAGE_RENEW_ONLY;
48}
49
50sub is_start_sub_only {
51 my ($self) = @_;
52
53 $self->{subscription_usage} == SUBUSAGE_START_ONLY;
54}
55
0eb78304
TC
56sub _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
79sub option_descs {
80 my ($self, $cfg, $rvalues) = @_;
81
82 $rvalues or $rvalues = [ ];
83
84 return $self->_get_prod_options($cfg, @$rvalues);
85}
86
41b9d8ec 871;