#------------------------------------------------------------
# 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;    #
###

