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


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{licenseReserveID})
    {
        $self->_propertiesFromDB(\%properties, $args{licenseReserveID});
    }
    else
    {
        $self->_initWithDefaults(\%properties);
    }

    $self->_initProperties(\%properties);
    $self->_initSubs(\%properties);

    return $self;
}


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

    my $dbItem = $self->_reserve()->Lookup(license_reserve_id => $licenseID);
    $self->_propertiesFromDBItem($hrProperties, $dbItem);
}


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

    $hrProperties->{license_reserve_id} = $dbItem->license_reserve_id;
    $hrProperties->{track_license_id}   = $dbItem->track_license_id;
    $hrProperties->{initial_units}      = $dbItem->initial_units;
    $hrProperties->{remaining_units}    = $dbItem->remaining_units;
    $hrProperties->{effective_rate}     = $dbItem->effective_rate;
    $hrProperties->{next_period}        = $dbItem->next_period;

    $hrProperties->{date_created}       = $dbItem->date_created;
    $hrProperties->{date_modified}      = $dbItem->date_modified;
}


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

    $self->{LicenseReserveID}   = Common::FormObject::Scalar->new(value => $props->{license_reserve_id}, readOnly => 1);
    $self->{TrackLicenseID}     = Common::FormObject::Scalar->new(value => $props->{track_license_id});
    $self->{InitialUnits}       = Common::FormObject::Scalar->new(value => $props->{initial_units});
    $self->{RemainingUnits}     = Common::FormObject::Scalar->new(value => $props->{remaining_units});
    $self->{EffectiveRate}      = Common::FormObject::Scalar::Decimal->new(value => $props->{effective_rate});
    $self->{NextPeriod}         = Common::FormObject::Scalar::Integer->new(value => $props->{next_period});

    $self->{DateCreated}        = Common::FormObject::Scalar::DateTime->new(value => $props->{date_created}, readOnly => 1);
    $self->{DateModified}       = Common::FormObject::Scalar::DateTime->new(value => $props->{date_modified}, readOnly => 1);
}


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

	if($self->loadSubs())
	{
	}
}


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

###
1;#
###

