Index: Order.pm =================================================================== --- Order.pm (revision 564) +++ Order.pm (revision 565) @@ -112,6 +112,7 @@ # my $query = $self->{keeper}->SQL->prepare("delete from basket where order_id = ? and uid = ?"); # $query->execute( $self->id, $self->uid ); + $self->status(5); $self->store; } @@ -139,7 +140,58 @@ ]; } +sub pre_store +{ + my $self = shift; + if ( grep { $_ eq 'payments' } split /\s+/, $state->plugins ) { + my $action; + my ($lastop) = $keeper->get_documents( class => 'payments::Operation', order_id => $self->id, order_by => 'id desc', limit => 1 ); + if ( ref $lastop ) { + if ( $self->status == 1 || $self->status == 2 || $self->status == 6 ) { + if ( $lastop->name eq 'suspend' || $lastop->name eq 'cancel' || $lastop->name eq 'close' ) { + $action = 'resume'; + } + } elsif ( $self->status == 7 ) { + if ( $lastop->name ne 'suspend' ) { + $action = 'suspend'; + } + } elsif ( $self->status == 4 ) { + if ( $lastop->name ne 'close' ) { + $action = 'close'; + } + } elsif ( $self->status == 5 ) { + if ( $lastop->name ne 'cancel' ) { + $action = 'cancel'; + } + } + } else { + if ( $self->status == 1 || $self->status == 2 || $self->status == 6 ) { + $action = 'create'; + } elsif ( $self->status == 7 ) { + $action = 'suspend'; + } elsif ( $self->status == 4 ) { + $action = 'close'; + } elsif ( $self->status == 5 ) { + $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; + } + } + return 1; +} + + sub post_delete { my $self = shift;