#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#------------------------------------------------------------
package RPS::Statement::Mechanical::StatementTransaction;

use strict;
use warnings;
use Carp;

use Data::Dumper;

use lib '/app/tools/common/lib';
use Common::Assert;

use lib '/app/tools/rps/lib';


use Common::FormObject;
use base 'Common::FormObject';


sub _init
{
    my ($self, %args) = @_;

    $self->SUPER::_init(%args);

    my %properties;
    if ($args{_dbItem})
    {
        $self->_propertiesFromDBItem(\%properties, $args{_dbItem});
    }
    elsif ($args{mechanicalStatementTransactionID})
    {
        $self->_propertiesFromDB(\%properties, $args{mechanicalStatementTransactionID});
    }
    else
    {
        $self->_propertiesFromDefaults(\%properties);
    }

    $self->_initProperties(\%properties);

    return $self;
}


sub _propertiesFromDB
{
    my ($self, $hrProperties, $id) = @_;
    assert(0, 'override this');
}


sub _propertiesFromDBItem
{
	my ($self, $hrProperties, $dbItem) = @_;
    assert(0, 'override this');
}

sub _getCurrencyCode
{
    assert(0, 'override this');
}

sub _initProperties
{
    my ($self, $props) = @_;

    # !!! Assuming USD for now.
    #
    my $currencyCode = $self->_getCurrencyCode();

    $self->{MechanicalStatementTransactionID} = Common::FormObject::Scalar->new(value => $props->{mechanical_statement_transaction_id}, readOnly => 1);
    $self->{MechanicalStatementID}      = Common::FormObject::Scalar->new(value => $props->{mechanical_statement_id});
    $self->{Amount}                     = Common::FormObject::Scalar::Money->new(value => $props->{amount}, currencyCode => $currencyCode);
    $self->{Memo}                       = Common::FormObject::Scalar::String->new(value => $props->{memo});
    $self->{CheckNumber}                = Common::FormObject::Scalar::String->new(value => $props->{check_number});
    $self->{PendingTransactionID}       = Common::FormObject::Scalar->new(value => $props->{pending_transaction_id});
    $self->{DateModified}               = Common::FormObject::Scalar::Date->new(value => $props->{date_modified});
    $self->{TransactionDate}            = Common::FormObject::Scalar::Date->new(value => $props->{transaction_date});
    $self->{TypeCode}                   = Common::FormObject::Scalar::String->new(value => $props->{type_code});
}




sub _propertiesFromDefaults
{
    my ($self, $hrProperties) = @_;

}

###
1;#
###
