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

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{mechanicalStatementAdjustentItemID})
    {
        $self->_propertiesFromDB(\%properties, $args{mechanicalStatementAdjustmentItemID});
    }
    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) = @_;

    my $currencyCode = $self->_getCurrencyCode();

    $self->{MechanicalStatementAdjustmentItemID}
     = Common::FormObject::Scalar->new(value => $props->{mechanical_statement_adjustment_item_id}, readOnly => 1);

    $self->{MechanicalStatementID} =    Common::FormObject::Scalar->new(value => $props->{mechanical_statement_id});
    $self->{TrackLicenseID} =           Common::FormObject::Scalar->new(value => $props->{track_license_id});

    $self->{OriginalMechanicalStatementItemID}
     = Common::FormObject::Scalar->new(value => $props->{original_mechanical_statement_item_id});

    $self->{PreviousMechanicalStatementAdjustmentItemID}
     = Common::FormObject::Scalar->new(value => $props->{previous_mechanical_statement_adjustment_item_id});

    $self->{Amount} =                   Common::FormObject::Scalar::Money->new(value => $props->{amount}, precision => '.4', currencyCode => $currencyCode);
    $self->{NewTotal} =                 Common::FormObject::Scalar::Money->new(value => $props->{new_total}, precision => '.4', currencyCode => $currencyCode);

    $self->{AdjustmentTypeCode} =       Common::FormObject::Scalar->new(value => $props->{adjustment_type_code});

    $self->{OriginalMechanicalStatementItem} = $self->_getOriginalStatementItem($props->{original_mechanical_statement_item_id});

    return $self;
}

sub _getOriginalStatementItem
{
    my ($self, $originalStatementItemID) = @_;
    assert(0, 'override this');
}


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



###
1;#
###



