package payments::Keeper; use strict; use warnings 'all'; use base qw(Contenido::Keeper); use Contenido::Globals; sub add { my $self = shift; my (%opts) = @_; return undef unless $opts{type} && ( $opts{order} && ref $opts{order} || $opts{uid} && $opts{order} && $opts{sum}); return undef unless $opts{type} =~ /^(create|suspend|cancel|append|reform)$/; my $op = payments::Operation->new( $keeper ); $op->status(1); $op->name( $opts{type} ); if ( ref $opts{order} ) { $op->uid( $opts{order}->uid ); $op->order_id( $opts{order}->id ); $op->sum( $opts{order}->sum_total ); } else { $op->uid( $opts{uid} ); $op->order_id( $opts{order} ); $op->sum( $opts{sum} ); } $op->store; return $op; } sub check { my $self = shift; my $order_id = shift; return undef unless $order_id; my $ops = $keeper->get_documents( class => 'payments::Operation', order_id => $order_id, order_by => 'ctime', return_mode => 'array_ref', ); if ( ref $ops eq 'ARRAY' && @$ops ) { return $ops->[-1]; } return undef; } 1;