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