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

use strict;
use Carp;
use Data::Dumper;

use lib '/app/tools/common/lib';
use Common::Timer;

use lib '/app/tools/rps/lib';
use RPS::DB::Item::ArtistRoyaltyLicenseIncomeItem;
use RPS::DB::Item::NewArtistContract;
use RPS::DB::Item::Album;
use RPS::DB::Item::Track;

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


sub _init
{
    my ($self, %args) = @_;
    my $timer = Common::Timer->new();

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

    my %properties;
    if ($args{_dbItem})
    {
        $self->_propertiesFromDBItem(\%properties, $args{_dbItem});
    }
    elsif ($args{artistRoyaltyLicenseIncomeItemID})
    {
		# I'm pretty sure we'll always be instantiating with _dbItem
		#
        $self->_propertiesFromDB(\%properties, $args{artistRoyaltyLicenseIncomeItemID});
    }
    else
    {
        $self->_propertiesFromDefaults(\%properties);
    }

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

    return $self;
}


sub _propertiesFromDB
{
    my ($self, $hrProperties, $id) = @_;
    my $timer = Common::Timer->new();

    my $dbItem = RPS::DB::Item::ArtistRoyaltyLicenseIncomeItem->Lookup(artist_royalty_license_income_item_id => $id);
    $self->_propertiesFromDBItem($hrProperties, $dbItem);
}


sub _propertiesFromDBItem
{
	my ($self, $hrProperties, $dbItem) = @_;
    my $timer = Common::Timer->new();

    $hrProperties->{artist_royalty_license_income_item_id}	= $dbItem->artist_royalty_license_income_item_id;
    $hrProperties->{license_income_id}		= $dbItem->license_income_id;
    $hrProperties->{artist_royalty_statement_id}		= $dbItem->artist_royalty_statement_id;
    $hrProperties->{album_id}						= $dbItem->album_id;
    $hrProperties->{track_id}						= $dbItem->track_id;
    $hrProperties->{artist_contract_id}		= $dbItem->artist_contract_id;
    $hrProperties->{license_income_type_id}				= $dbItem->license_income_type_id;
    $hrProperties->{rate}							= $dbItem->rate;
    $hrProperties->{units}						= $dbItem->units;
    $hrProperties->{revenue}					    = $dbItem->revenue;
    $hrProperties->{net_revenue}					= $dbItem->net_revenue;
    $hrProperties->{memo}						= $dbItem->memo;
}


sub _initProperties
{
    my ($self, $props) = @_;
    my $timer = Common::Timer->new();

    $self->{ArtistRoyaltyLicenseIncomeItemID}  = Common::FormObject::Scalar->new(value => $props->{artist_royalty_license_income_item_id}, readOnly => 1);
    $self->{LicenseIncomeID}		= Common::FormObject::Scalar->new(value => $props->{license_income_id});
    $self->{ArtistRoyaltyStatementID}		= Common::FormObject::Scalar->new(value => $props->{artist_royalty_statement_id});    
    $self->{AlbumID}					= Common::FormObject::Scalar->new(value => $props->{album_id});
    $self->{TrackID}					= Common::FormObject::Scalar->new(value => $props->{track_id});
    $self->{ArtistContractID}		= Common::FormObject::Scalar->new(value => $props->{artist_contract_id});
    $self->{LicenseIncomeTypeID}				= Common::FormObject::Scalar->new(value => $props->{license_income_type_id});
    $self->{Rate}						= Common::FormObject::Scalar::Decimal->new(value => $props->{rate}, precision => '.2');
    $self->{Units}					= Common::FormObject::Scalar::Integer->new(value => $props->{units});
    $self->{Revenue}					= Common::FormObject::Scalar::Money->new(value => $props->{revenue});
    $self->{NetRevenue}					= Common::FormObject::Scalar::Money->new(value => $props->{net_revenue});
    $self->{Memo}	            = Common::FormObject::Scalar::String->new(value => $props->{memo});
}


sub _initSubs
{
    my ($self, $props) = @_;
    my $timer = Common::Timer->new();

	if($self->loadSubs())
	{
      # then let's get the track info
      #
      my $trackObj = RPS::DB::Item::Track->Lookup(track_id => $props->{track_id});
		  if($trackObj)
	 	  {
			  my $trackTitle = $trackObj->title;
			  $trackTitle =~ s/^\s+//;
			  $trackTitle =~ s/\s+$//;
	      $self->{TrackName} = Common::FormObject::Scalar::String->new(value => $trackTitle)
			}
      else
      {
        $self->{TrackName} = Common::FormObject::Scalar::String->new();
      }
      # then let's get the contract info
      #
      my $contractObj = RPS::DB::Item::NewArtistContract->Lookup(artist_contract_id => $props->{artist_contract_id});
		  if($contractObj)
	 	  {
			  my $contractTitle = $contractObj->title;
			  $contractTitle =~ s/^\s+//;
			  $contractTitle =~ s/\s+$//;
	      $self->{ContractTitle} = Common::FormObject::Scalar::String->new(value => $contractTitle)
			}
      else
      {
        $self->{ContractTitle} = Common::FormObject::Scalar::String->new();
      }      
	}
}


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


###
1;#
###



