1 package BSE::TB::OrderItem;
3 # represents an order line item from the database
6 @ISA = qw/Squirrel::Row/;
8 our $VERSION = "1.006";
10 sub table { "order_item" }
13 return qw/id productId orderId units price wholesalePrice gst options
14 customInt1 customInt2 customInt3 customStr1 customStr2 customStr3
15 title description subscription_id subscription_period max_lapsed
16 session_id product_code tier_id product_discount product_discount_units/;
20 return map { $_ eq "description" ? "summary" : $_ } $_[0]->columns;
40 require BSE::TB::OrderItemOptions;
41 return sort { $a->{display_order} <=> $b->{display_order} }
42 BSE::TB::OrderItemOptions->getBy(order_item_id => $self->{id});
48 $self->productId == -1
50 require BSE::TB::Products;
51 return BSE::TB::Products->getByPkey($self->productId);
57 my $product = $self->product;
58 if (length $self->{options}) {
59 my @values = split /,/, $self->options;
65 label => $_->{display},
66 }, $product->option_descs(BSE::Cfg->single, \@values);
69 my @options = $self->option_list;
72 id => $_->original_id,
83 my @options = $self->option_hashes
86 return '('.join(", ", map("$_->{desc} $_->{label}", @options)).')';
95 require BSE::TB::SeminarSessions;
96 return BSE::TB::SeminarSessions->getByPkey($self->session_id);
99 # cart item compatibility
105 my ($self, $name) = @_;
107 return $self->units * $self->$name();
113 my $tier_id = $self->tier_id
116 require BSE::TB::PriceTiers;
117 my $tier = BSE::TB::PriceTiers->getByPkey($tier_id)