Line # Revision Author
1 694 ahitrov package money::SQL::ChecksTable;
2 693 ahitrov
3 use base 'SQL::DocumentTable';
4
5 sub db_table
6 {
7 699 ahitrov return 'money_checks';
8 693 ahitrov }
9
10 sub db_id_sequence {
11 699 ahitrov return 'money_checks_id_seq';
12 693 ahitrov }
13
14 sub available_filters {
15 my @available_filters = qw(
16
17 _class_filter
18 _status_filter
19 _in_id_filter
20 _id_filter
21 _name_filter
22 _class_excludes_filter
23 _sfilter_filter
24 _excludes_filter
25 _datetime_filter
26 _date_equal_filter
27 _date_filter
28 _previous_days_filter
29
30 _provider_filter
31 _session_id_filter
32 _order_id_filter
33 _success_filter
34 _name_exact_filter
35 );
36
37 return \@available_filters;
38 }
39
40 # ----------------------------------------------------------------------------
41 # Свойства храним в массивах, потому что порядок важен!
42 # Это общие свойства - одинаковые для всех документов.
43 #
44 # attr - обязательный параметр, название атрибута;
45 # type - тип аттрибута, требуется для отображдения;
46 # rusname - русское название, опять же требуется для отображения;
47 # hidden - равен 1, когда
48 # readonly - инициализации при записи только без изменения в дальнейшем
49 # db_field - поле в таблице
50 # default - значение по умолчанию (поле всегда имеет это значение)
51 # ----------------------------------------------------------------------------
52 sub required_properties
53 {
54 my $self = shift;
55
56 my @parent_properties = grep { $_->{attr} ne 'sections' } $self->SUPER::required_properties;
57 return (
58 @parent_properties,
59 {
60 'attr' => 'provider',
61 'type' => 'string',
62 'rusname' => 'Провайдер',
63 'db_field' => 'provider',
64 'db_type' => 'text',
65 },
66 {
67 'attr' => 'session_id',
68 'type' => 'string',
69 'rusname' => 'Ключ сессии',
70 'db_field' => 'session_id',
71 'db_type' => 'text',
72 },
73 { # ID заказа
74 'attr' => 'order_id',
75 'type' => 'integer',
76 'rusname' => 'ID заказа',
77 'db_field' => 'order_id',
78 'db_type' => 'integer',
79 'db_opts' => "not null",
80 },
81 {
82 'attr' => 'currency_code',
83 'type' => 'string',
84 'rusname' => 'ID валюты',
85 'db_field' => 'currency_code',
86 'db_type' => 'varchar(4)',
87 },
88 {
89 'attr' => 'sum',
90 'type' => 'string',
91 'rusname' => 'Сумма чека',
92 'db_field' => 'sum',
93 'db_type' => 'float',
94 },
95 { # Результат транзакции
96 'attr' => 'success',
97 'type' => 'checkbox',
98 'rusname' => 'Транзакция прошла успешно',
99 'db_field' => 'success',
100 'db_type' => 'smallint',
101 'db_opts' => "default 0",
102 },
103 );
104 }
105
106
107 ########### FILTERS DESCRIPTION ###############################################################################
108 sub _order_id_filter {
109 my ($self,%opts)=@_;
110 return undef unless ( exists $opts{order_id} );
111 return &SQL::Common::_generic_int_filter('d.order_id', $opts{order_id});
112 }
113
114 sub _success_filter {
115 my ($self,%opts)=@_;
116 return undef unless ( exists $opts{success} );
117 return &SQL::Common::_generic_int_filter('d.success', $opts{success});
118 }
119
120 sub _provider_filter {
121 my ($self,%opts)=@_;
122 return undef unless ( exists $opts{provider} );
123 return &SQL::Common::_generic_text_filter('d.provider', $opts{provider});
124 }
125
126 sub _session_id_filter {
127 my ($self,%opts)=@_;
128 return undef unless ( exists $opts{session_id} );
129 return &SQL::Common::_generic_int_filter('d.session_id', $opts{session_id});
130 }
131
132 sub _name_exact_filter {
133 my ($self,%opts)=@_;
134 return undef unless ( exists $opts{name_exact} );
135 return &SQL::Common::_generic_text_filter('d.name', $opts{name_exact});
136 }
137
138 1;