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

use strict;
use warnings;
use Data::Dumper;
use Carp;
use Date::Calc qw( Date_to_Days Decode_Date_US );

use lib '/app/tools/common/lib';
use Common::Assert;
use Common::Util qw(decodeDateMysql);
use Common::Log;

use lib '/app/tools/rps/lib';
use RPS::License::BaseTrackLicense;
use RPS::License::ReserveLiquidationList;
use RPS::DB::Item::TrackLicense;
use RPS::DB::Item::LicenseReserve;
use RPS::DB::Item::ReserveLiquidation;
use RPS::DB::Item::MechanicalStatementItem;
use RPS::DB::Item::PublisherTrackCrossedLicenseAccount;

use RPS::License::ReserveLiquidationList;
use RPS::DB::Item::ReserveLiquidation;
use RPS::Finance::Account;

use RPS::License::US;
use base 'RPS::License::US::TrackLicense';



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

    $self->SUPER::_initProperties($props);

    my $id = $self->TrackLicenseID();

    $self->{ReserveLiquidationList} = RPS::License::ReserveLiquidationList->new
    (
          id => $id,
          type => RPS::DB::Item::ReserveLiquidation::kTypePublishingLicense,
    );
    
    $self->{FinanceAccount} = RPS::Finance::Account->new(accountID => $props->{finance_account_id}, loadSubs => 0);

    # !!! We also need the CrossedAccount, so we can display the balance.
    #
    if ($self->PublisherID())
    {
        my $crossedAccountMap = RPS::DB::Item::PublisherTrackCrossedLicenseAccount->Lookup(
            publisher_id => $self->PublisherID(),
            payor_id => $self->PayorID(),
            track_id => $self->TrackID(),
        );
        if ($crossedAccountMap && $crossedAccountMap->finance_account_id)
        {
            $self->{CrossedFinanceAccount} = RPS::Finance::Account->new(accountID => $crossedAccountMap->finance_account_id);
        }
    }

        
}


sub save
{
    my ($self) = @_;
    
    # Need to stash the liquidation schedule away here because the one in $self
    # gets overwritten on save.
    #
    my $schedule = $self->{ReserveLiquidationList};
    
    $self->SUPER::save();

	# let's save the liquidation list
	#
	foreach my $liq (@{$schedule->getList()})
	{
	    
		if(defined $liq && $liq->Percent())
		{

			$liq->ID($self->TrackLicenseID());
			$liq->Type(RPS::DB::Item::ReserveLiquidation::kTypePublishingLicense);
		}
	}
	
	$schedule->save();
}

###
1;#
###
