Revision 363
Date:
2013/06/18 12:29:19
Author:
ahitrov
Revision Log:
Coupon basket recount bug
New session object used in webshop operations
Files:
Legend:
Added
Removed
Modified
utf8/plugins/webshop/lib/webshop/Coupon.pm
119
119
if ( ref $items eq 'ARRAY' && @$items ) {
120
120
my $found_sum = 0;
121
121
foreach my $bi ( @$basket ) {
122
warn "BASKET: Item id [".$bi->item_id."]\n";
122
warn "BASKET: Item id [".$bi->item_id."]\n" if $DEBUG;
123
123
next unless $bi->special_price;
124
124
foreach ( @$items) {
125
warn "BASKET: Item [".$_->name."] id [".$_->id."]\n";
126
125
if ( $bi->item_id == $_->id ) {
126
warn "BASKET: Item [".$_->name."] id [".$_->id."]\n" if $DEBUG;
127
127
$found_sum += $bi->number * $bi->price;
128
128
last;
129
129
}
130
130
}
131
131
}
132
warn "Sum found: [$found_sum]\n";
132
warn "Sum found: [$found_sum]\n" if $DEBUG;
133
133
return $self->can_discount( $found_sum );
134
134
} elsif ( $self->groups ) {
135
135
return 0;
136
} else {
137
my $found_sum = 0;
138
foreach my $bi ( @$basket ) {
139
warn "BASKET: Item id [".$bi->item_id."]\n" if $DEBUG;
140
next unless $bi->special_price;
141
$found_sum += $bi->number * $bi->price;
142
}
143
warn "Sum found: [$found_sum]\n" if $DEBUG;
144
return $self->can_discount( $found_sum );
136
145
}
137
138
return $self->can_discount( $sum_total );
146
return 0;
139
147
}
140
148
141
149
utf8/plugins/webshop/lib/webshop/Keeper.pm
53
53
$object->store;
54
54
}
55
55
my @plugins = split (/[\ |\t]+/, $state->{plugins});
56
if ( grep { $_ eq 'session' } @plugins ) {
57
$keeper->{session}->store_value ( basket_total => $total, basket_sum => $sum );
56
if ( grep { $_ eq 'session' } @plugins && ref $session ) {
57
$session->set ( basket_total => $total, basket_sum => $sum );
58
58
}
59
59
return ($total, $sum);
60
60
}
…
…
92
92
$sum += $item->number * $item->price;
93
93
}
94
94
my @plugins = split (/[\ |\t]+/, $state->{plugins});
95
if ( grep { $_ eq 'session' } @plugins ) {
96
$keeper->{session}->store_value ( basket_total => $total, basket_sum => $sum );
95
if ( grep { $_ eq 'session' } @plugins && ref $session ) {
96
$session->set ( basket_total => $total, basket_sum => $sum );
97
97
}
98
98
warn "Merge end\n" if $DEBUG;
99
99
return ($total, $sum);
…
…
107
107
return unless $opts{uid} || $opts{session} || $opts{order_id};
108
108
109
109
my $uid = delete $opts{uid};
110
my $session = delete $opts{session};
110
my $session_id = delete $opts{session};
111
111
unless ( exists $opts{order_id} && $opts{order_id} ) {
112
112
$opts{order_id} = 0;
113
113
if ( $uid ) {
114
114
$opts{uid} = $uid;
115
} elsif ( $session ) {
116
$opts{session} = $session;
115
} elsif ( $session_id ) {
116
$opts{session} = $session_id;
117
117
}
118
118
}
119
119
$opts{status} = 1 unless exists $opts{status} && defined $opts{status};
…
…
130
130
}
131
131
}
132
132
my @plugins = split (/[\ |\t]+/, $state->{plugins});
133
if ( grep { $_ eq 'session' } @plugins ) {
134
$keeper->{session}->store_value ( basket_total => $total, basket_sum => $sum );
133
if ( grep { $_ eq 'session' } @plugins && ref $session ) {
134
$session->set ( basket_total => $total, basket_sum => $sum );
135
135
}
136
136
return \@items;
137
137
}
…
…
177
177
$statement->finish;
178
178
179
179
my @plugins = split (/[\ |\t]+/, $state->{plugins});
180
if ( grep { $_ eq 'session' } @plugins ) {
181
$keeper->{session}->store_value ( basket_total => 0, basket_sum => 0 );
180
if ( grep { $_ eq 'session' } @plugins && ref $session ) {
181
$session->set ( basket_total => 0, basket_sum => 0 );
182
182
}
183
183
}
184
184
…
…
258
258
}
259
259
}
260
260
my @plugins = split (/[\ |\t]+/, $state->{plugins});
261
if ( !$session_no_store && grep { $_ eq 'session' } @plugins ) {
262
$keeper->{session}->store_value ( basket_total => $total, basket_sum => $sum );
261
if ( !$session_no_store && grep { $_ eq 'session' } @plugins && ref $session ) {
262
$session->set ( basket_total => $total, basket_sum => $sum );
263
263
}
264
264
return ($total, $sum, \@new_basket);
265
265
}
Небольшая справка по веткам
cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.
koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.
utf8 – актуальная ветка, заточенная под UTF-8.
Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.