ba8345bfc25f7b465651c820060c950feaabb24d
[bse.git] / site / cgi-bin / modules / BSE / TB / ProductOption.pm
1 package BSE::TB::ProductOption;
2 use strict;
3 use parent 'Squirrel::Row', 'BSE::CustomData';
4
5 our $VERSION = "1.002";
6
7 sub columns {
8   return qw/id product_id name type global_ref display_order enabled default_value custom_data/;
9 }
10
11 sub table {
12   "bse_product_options";
13 }
14
15 sub defaults {
16   return
17     (
18      global_ref => undef,
19      enabled => 1,
20      type => "select",
21      default_value => 0,
22      custom_data => undef,
23     );
24 }
25
26 sub values {
27   my ($self) = @_;
28
29   require BSE::TB::ProductOptionValues;
30   return sort { $a->{display_order} <=> $b->{display_order} }
31     BSE::TB::ProductOptionValues->getBy(product_option_id => $self->{id});
32 }
33
34 sub key {
35   my $self = shift;
36   return "prodopt_" . $self->id;
37 }
38
39 sub remove {
40   my ($self) = @_;
41
42   my @values = $self->values;
43   for my $value (@values) {
44     $value->remove;
45   }
46
47   return $self->SUPER::remove;
48 }
49
50 sub data_only {
51   my ($self) = @_;
52
53   my $result = $self->SUPER::data_only;
54   $result->{values} = [ map $_->data_only, $self->values ];
55
56   return $result;
57 }
58
59 1;