Line # Revision Author
1 198 ahitrov package webshop::SQL::AddressTable;
2
3 use base 'SQL::DocumentTable';
4
5 sub db_table
6 {
7 return 'adresses';
8 }
9
10 my $available_filters = [qw(
11
12 _class_filter
13 _status_filter
14 _in_id_filter
15 _id_filter
16 _name_filter
17 _class_excludes_filter
18 _sfilter_filter
19 _excludes_filter
20 _datetime_filter
21 _date_equal_filter
22 _date_filter
23 _previous_days_filter
24 _s_filter
25
26 _uid_filter
27 727 ahitrov _active_delivery_filter
28 198 ahitrov )];
29
30 sub available_filters {
31 return $available_filters;
32 }
33
34
35 # ----------------------------------------------------------------------------
36 # Свойства храним в массивах, потому что порядок важен!
37 # Это общие свойства - одинаковые для всех документов.
38 #
39 # attr - обязательный параметр, название атрибута;
40 # type - тип аттрибута, требуется для отображдения;
41 # rusname - русское название, опять же требуется для отображения;
42 # hidden - равен 1, когда
43 # readonly - инициализации при записи только без изменения в дальнейшем
44 # db_field - поле в таблице
45 # default - значение по умолчанию (поле всегда имеет это значение)
46 # ----------------------------------------------------------------------------
47 sub required_properties
48 {
49 my $self = shift;
50
51 517 ahitrov my @parent_properties = grep { $_->{attr} ne 'sections' } $self->SUPER::required_properties;
52 198 ahitrov return (
53 @parent_properties,
54 { # User ID
55 'attr' => 'uid',
56 'type' => 'string',
57 'rusname' => 'ID пользователя',
58 # 'hidden' => 1,
59 'db_field' => 'uid',
60 'db_type' => 'integer',
61 'db_opts' => "not null default 0",
62 'default' => 0,
63 },
64 517 ahitrov {
65 'attr' => 'sections',
66 'type' => 'sections_list',
67 'rusname' => 'Секции',
68 'hidden' => 1,
69 'db_field' => 'sections',
70 'db_type' => 'integer',
71 },
72 198 ahitrov );
73 }
74
75 ########### FILTERS DESCRIPTION ###############################################################################
76 sub _uid_filter {
77 my ($self,%opts)=@_;
78 return undef unless ( exists $opts{uid} );
79 return &SQL::Common::_generic_int_filter('d.uid', $opts{uid});
80 }
81
82 517 ahitrov sub _s_filter {
83 my ($self,%opts)=@_;
84 return undef unless ( exists $opts{s} );
85 return &SQL::Common::_generic_int_filter('d.sections', $opts{s});
86 }
87
88 727 ahitrov sub _active_delivery_filter {
89 my ($self,%opts)=@_;
90 return undef unless ( exists $opts{active} && $opts{active} );
91 return ([], [], " join webshop_delivery as l on l.id=d.delivery_id and l.status > 0 ");
92 }
93
94 198 ahitrov 1;