Index: Order.pm =================================================================== --- Order.pm (revision 713) +++ Order.pm (revision 714) @@ -81,6 +81,28 @@ ) } +sub recount { + my $self = shift; + my $basket = $self->keeper->{webshop}->get_basket( order_id => $self->id ); + my $store = 0; + if ( ref $basket && @$basket ) { + my $sum = 0; + foreach my $bi ( @$basket ) { + $sum += $bi->price * $bi->number; + } + if ( $sum != $self->sum ) { + $self->sum( $sum ); + $store = 1; + } + my $coupons = $self->keeper->get_documents( + class => 'webshop::Coupon', + lclass => 'webshop::OrderCouponLink', + ); + } + if ( $store ) { + $self->store; + } +} sub sum_total { my $self = shift; @@ -177,16 +199,8 @@ $action = 'cancel'; } } - if ( $action ) { - my $op = payments::Operation->new( $keeper ); - $op->name( $action ); - $op->order_id( $self->id ); - $op->uid( $self->uid ); - if ( ref $user ) { - $op->uuid( $user->id ); - } - $op->sum( $self->sum_total ); - $op->store; + if ( $action && exists $keeper->{payments} ) { + my $op = $keeper->{payments}->add( order => $self, type => $action, ref $user ? (uuid => $user->id) : () ); } } return 1;