Revision 413
Date:
2014/02/11 22:47:35
Author:
ahitrov
Revision Log:
Payment libs and sql-table additions
Files:
Legend:
Added
Removed
Modified
utf8/plugins/webshop/lib/webshop/Delivery.pm
13
13
[1, 'Действует'],
14
14
],
15
15
},
16
{ 'attr' => 'dtime', 'hidden' => 1 },
17
{ 'attr' => 'price', 'type' => 'string', 'rusname' => 'Стоимость доставки (число)', default => 0 },
16
{ 'attr' => 'dtime', 'hidden' => 1, column => undef },
17
{ 'attr' => 'price', 'type' => 'string', 'rusname' => 'Стоимость доставки (число)', default => 0, column => 4 },
18
18
{ 'attr' => 'price_modify', 'type' => 'cost_level', 'rusname' => 'Стоимость доставки с учетом стоимости заказа' },
19
19
{ 'attr' => 'price_region', 'type' => 'cost_region', 'rusname' => 'Стоимость доставки с учетом региона' },
20
20
{ 'attr' => 'abstr', 'type' => 'text', 'rusname' => 'Краткое описание' },
utf8/plugins/webshop/lib/webshop/Init.pm
21
21
webshop::Basket
22
22
webshop::Order
23
23
webshop::Delivery
24
webshop::Payment
24
25
webshop::Coupon
25
26
26
27
webshop::Country
…
…
28
29
webshop::Town
29
30
30
31
webshop::DeliverySection
32
webshop::PaymentSection
31
33
webshop::RegionSection
32
34
33
35
webshop::CouponItemLink
…
…
35
37
));
36
38
37
39
sub init {
38
push @{ $state->{'available_documents'} }, qw(webshop::Basket webshop::Order webshop::Delivery webshop::Coupon webshop::Country webshop::Area webshop::Town);
39
push @{ $state->{'available_sections'} }, qw(webshop::DeliverySection webshop::RegionSection);
40
push @{ $state->{'available_documents'} }, qw(webshop::Basket webshop::Order webshop::Delivery webshop::Payment webshop::Coupon webshop::Country webshop::Area webshop::Town);
41
push @{ $state->{'available_sections'} }, qw(webshop::DeliverySection webshop::PaymentSection webshop::RegionSection);
40
42
push @{ $state->{'available_links'} }, qw(webshop::CouponItemLink webshop::OrderCouponLink);
41
43
0;
42
44
}
utf8/plugins/webshop/lib/webshop/Order.pm
21
21
'class' => 'webshop::Delivery',
22
22
},
23
23
},
24
{ 'attr' => 'pay_by', 'type' => 'lookup', 'rusname' => 'Тип оплаты', facilshow => 1, postshow => 1,
25
'lookup_opts' => {
26
'class' => 'webshop::Payment',
27
},
28
},
24
29
{ 'attr' => 'btime', 'type' => 'datetime', 'rusname' => 'Заказ отдан на комплектацию',
25
30
postshow => 1, facilshow => 1 },
26
31
{ 'attr' => 'ftime', 'type' => 'datetime', 'rusname' => 'Заказ передан в доставку',
utf8/plugins/webshop/lib/webshop/Payment.pm
1
package webshop::Payment;
2
3
use base "Contenido::Document";
4
5
sub extra_properties
6
{
7
return (
8
{ 'attr' => 'status', 'type' => 'status', 'rusname' => 'Статус',
9
'cases' => [
10
[0, 'Не активен'],
11
[1, 'Действует'],
12
],
13
},
14
{ 'attr' => 'dtime', 'hidden' => 1, column => undef },
15
{ 'attr' => 'class', 'column' => undef },
16
{ 'attr' => 'abstr', 'type' => 'text', 'rusname' => 'Краткое описание' },
17
{ 'attr' => 'online', 'type' => 'checkbox', 'rusname' => 'Онлайн-оплата', column => 4 },
18
{ 'attr' => 'url', 'type' => 'string', 'rusname' => 'URL перехода на страницу оплаты',
19
'shortname' => 'URL перехода', column => 5,
20
'rem' => 'техническое поле, заполняется программистом' },
21
# { 'attr' => 'handler', 'type' => 'string', 'rusname' => 'Обработчик', rem => 'техническое поле, заполняется программистом' },
22
)
23
}
24
25
26
sub class_name
27
{
28
return 'Способ оплаты';
29
}
30
31
sub class_description
32
{
33
return 'Способ оплаты';
34
}
35
36
sub pre_store
37
{
38
my $self = shift;
39
40
my $default_section = $project->s_alias->{payment} if ref $project->s_alias eq 'HASH' && exists $project->s_alias->{payment};
41
my $sections = $self->{sections};
42
if ( $default_section ) {
43
if ( ref $sections eq 'ARRAY' && scalar @$sections ) {
44
my @new_sects = grep { $_ != $default_section } @$sections;
45
push @new_sects, $default_section;
46
$self->sections(@new_sects);
47
} elsif ( $sections && !ref $sections && $sections != $default_section ) {
48
my @new_sects = ($sections, $default_section);
49
$self->sections(@new_sects);
50
} else {
51
$self->sections($default_section);
52
}
53
}
54
55
return 1;
56
}
57
58
1;
utf8/plugins/webshop/lib/webshop/PaymentSection.pm
1
package webshop::PaymentSection;
2
3
use base 'Contenido::Section';
4
5
sub extra_properties
6
{
7
return (
8
{ 'attr' => 'brief', 'type' => 'text', 'rusname' => 'Описание секции' },
9
{ 'attr' => 'default_document_class', 'default' => 'webshop::Payment' },
10
{ 'attr' => '_sorted', 'default' => 1 },
11
{ 'attr' => 'filters', 'hidden' => 1 },
12
{ 'attr' => 'order_by', 'hidden' => 1 },
13
)
14
}
15
16
sub class_name
17
{
18
return 'Cпособы оплаты';
19
}
20
21
sub class_description
22
{
23
return 'Cпособы оплаты';
24
}
25
26
1;
utf8/plugins/webshop/lib/webshop/SQL/Order.pm
23
23
_previous_days_filter
24
24
_s_filter
25
25
26
_payment_filter
26
27
_uid_filter
27
28
_manager_filter
28
29
_vault_filter
…
…
157
158
'db_field' => 'status',
158
159
'db_type' => 'integer',
159
160
},
161
{
162
'attr' => 'payment',
163
'type' => 'checkbox',
164
'postshow' => 1,
165
'facilshow' => 1,
166
'column' => 8,
167
'rusname' => 'Оплачен',
168
'db_field' => 'payment',
169
'db_type' => 'integer',
170
},
160
171
);
161
172
162
173
# ----------------------------------------------------------------------------
…
…
188
199
return undef;
189
200
}
190
201
202
sub _payment_filter {
203
my ($self,%opts)=@_;
204
return undef unless ( exists $opts{payment} );
205
return &SQL::Common::_generic_int_filter('d.payment', $opts{payment});
206
}
207
191
208
sub _uid_filter {
192
209
my ($self,%opts)=@_;
193
210
return undef unless ( exists $opts{uid} );
utf8/plugins/webshop/sql/TOAST/orders.sql
5
5
dtime timestamp without time zone DEFAULT now() NOT NULL,
6
6
class text DEFAULT 'webshop::Order'::text NOT NULL,
7
7
status smallint default 0 NOT NULL,
8
payment smallint default 0,
8
9
sections integer[],
9
10
uid integer,
10
11
manager_id integer,
Небольшая справка по веткам
cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.
koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.
utf8 – актуальная ветка, заточенная под UTF-8.
Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.