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

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

use lib '/app/tools/rps/lib';
use RPS::Track::TrackContractAdvance;

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

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

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

    my ( $trackContractID, $trackContractAdvanceID );
    $trackContractID        = $args{trackContractID};
    $trackContractAdvanceID = $args{trackContractAdvanceID};

    # one or the other
    #
    if ($trackContractID) {
        $self->{TrackContractAdvance} = RPS::Track::TrackContractAdvance->new( trackContractID => $trackContractID, readOnly => 1 );
    } elsif ($trackContractAdvanceID) {
        $self->{TrackContractAdvance} =
          RPS::Track::TrackContractAdvance->new( trackContractAdvanceID => $trackContractAdvanceID, readOnly => 1 );
    } else {

        # woops!
        assert(0);
    }

    $self->{TrackContract} = RPS::Track::TrackContract->new(
        trackContractID => $self->{TrackContractAdvance}->TrackContractID(),
        loadSubs        => 0,
        readOnly        => 1,
    );

    $self->{_contractID} = $self->{TrackContract}->ContractID();

    $self->{Track} = RPS::Track::TrackSimple->new( trackID => $self->{TrackContract}->TrackID(), readOnly => 1 );

    $self->{Album} = RPS::Catalog::AlbumSimple->new( albumID => $self->{Track}->AlbumID(), loadSubs => 0, readOnly => 1 );

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

    return $self;
}

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

    $self->{TrackContractAdvance}->addAdvance( $self->Advance(), $self->Memo() );
}

sub contractID {
    my ($self) = @_;
    return $self->{_contractID};
}

###
1;    #
###
