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

use strict;
use warnings;
use Data::Dumper;
use lib '/app/tools/common/lib';
use Common::Assert;
use Common::Util;

use lib '/app/tools/rps/lib';
use RPS::Track::TrackSimple;
use RPS::Product::TypeList;
use RPS::Region::RegionList;
use RPS::RoyaltyRun::RoyaltyRunStatusList;

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

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

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

    my $trackLicenseID = $args{trackLicenseID};

    if ( !$trackLicenseID ) {
        assert(0);
    }

    $self->{TrackLicense} = $self->_license()->new( trackLicenseID => $trackLicenseID, );

    $self->{Track} = RPS::Track::TrackSimple->new( trackID => $self->{TrackLicense}->TrackID() );

    $self->{Account} = $self->_account()->new( trackLicenseID => $trackLicenseID );
    $self->{TypeList} = RPS::Product::TypeList->new( includeTrackProducts => 1 );
    $self->{RegionList} = RPS::Region::RegionList->new();

    $self->{RoyaltyRunStatus} = $self->_royaltyRunStatus();

    # Put some placeholders in here for editing purposes
    #
    #$self->{Amount} = Common::FormObject::Scalar::Decimal->new(value => 0);
    #$self->{Memo} = Common::FormObject::Scalar::String->new(value => "");
    #$self->{TransactionDate} = Common::FormObject::Scalar::Date->new(value => Common::Util::today());

    return $self;
}

sub validate {
    my ($self) = @_;

    # !!! Don't want to validate everything - Just the Account.
    #
    return $self->{Account}->validate();
}

sub save {
    my ($self) = @_;

    $self->{Account}->save();
}

sub trackLicenseID {
    my ($self) = @_;
    return $self->{TrackLicense}->TrackLicenseID();
}

###
1;    #
###
