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

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

use lib '/app/tools/rps/lib';
use RPS::ArtistContract::IncomeSource;
use RPS::DB::Item::IncomeSource;
use RPS::DB::Item::ContractRateType;

use Common::FormObject;
#use base 'Common::FormObject';
use base 'RPS::ArtistContract::IncomeSource';


my @gAll =
(
    RPS::DB::Item::ContractRateType::kRateTypePercentRetail,
    RPS::DB::Item::ContractRateType::kRateTypePercentWholesale,
    RPS::DB::Item::ContractRateType::kRateTypePercentDocumentRetail,
    RPS::DB::Item::ContractRateType::kRateTypePercentDocumentWholesale,
    RPS::DB::Item::ContractRateType::kRateTypePercentPPD,
    RPS::DB::Item::ContractRateType::kRateTypePercentAverage,
    RPS::DB::Item::ContractRateType::kRateTypePercentRevenue,
    RPS::DB::Item::ContractRateType::kRateTypeFixed,
    RPS::DB::Item::ContractRateType::kRateTypeNonPayable,
);

my @gAllDigital =
(
    RPS::DB::Item::ContractRateType::kRateTypePercentRetail,
    RPS::DB::Item::ContractRateType::kRateTypePercentWholesale,
    RPS::DB::Item::ContractRateType::kRateTypePercentPPD,
    RPS::DB::Item::ContractRateType::kRateTypePercentAverage,
    RPS::DB::Item::ContractRateType::kRateTypePercentRevenue,
    RPS::DB::Item::ContractRateType::kRateTypeFixed,
    RPS::DB::Item::ContractRateType::kRateTypeNonPayable,
);

my @gNetOnly = ( 
    RPS::DB::Item::ContractRateType::kRateTypePercentRevenue, 
    RPS::DB::Item::ContractRateType::kRateTypeNonPayable,
);

my @gNoRetail =
(
    RPS::DB::Item::ContractRateType::kRateTypePercentRevenue,
    RPS::DB::Item::ContractRateType::kRateTypeFixed,
    RPS::DB::Item::ContractRateType::kRateTypeNonPayable,
);

my %gRateTypeMap =
(
    RPS::DB::Item::IncomeSource::kIncomeSourceCD()                => { ContractRateTypeID => \@gAll },
    RPS::DB::Item::IncomeSource::kIncomeSourceLP()                => { ContractRateTypeID => \@gAll },
    RPS::DB::Item::IncomeSource::kIncomeSourceLP5()               => { ContractRateTypeID => \@gAll },    
    RPS::DB::Item::IncomeSource::kIncomeSourceCassette()          => { ContractRateTypeID => \@gAll },
    RPS::DB::Item::IncomeSource::kIncomeSourceDigitalAlbum()      => { ContractRateTypeID => \@gAllDigital },
    RPS::DB::Item::IncomeSource::kIncomeSourceDigitalTrack()      => { ContractRateTypeID => \@gAllDigital },
    RPS::DB::Item::IncomeSource::kIncomeSourceDigitalStream()     => { ContractRateTypeID => \@gNetOnly },
    RPS::DB::Item::IncomeSource::kIncomeSourceDigitalTethered()   => { ContractRateTypeID => \@gNetOnly },
    RPS::DB::Item::IncomeSource::kIncomeSourceRingtone()          => { ContractRateTypeID => \@gNoRetail },
    RPS::DB::Item::IncomeSource::kIncomeSourceMasterLicense()     => { ContractRateTypeID => \@gNetOnly },
    RPS::DB::Item::IncomeSource::kIncomeSourceSyncLicense()       => { ContractRateTypeID => \@gNetOnly },
    RPS::DB::Item::IncomeSource::kIncomeSourceJukebox()           => { ContractRateTypeID => \@gNetOnly },
    RPS::DB::Item::IncomeSource::kIncomeSourceDualDownload()      => { ContractRateTypeID => \@gNoRetail },
    RPS::DB::Item::IncomeSource::kIncomeSourceBackground()        => { ContractRateTypeID => \@gNetOnly },
    RPS::DB::Item::IncomeSource::kIncomeSourceDVDCDSet()          => { ContractRateTypeID => \@gAll},
    RPS::DB::Item::IncomeSource::kIncomeSourceCDSingle()          => { ContractRateTypeID => \@gAll},
    RPS::DB::Item::IncomeSource::kIncomeSourceDblCD()             => { ContractRateTypeID => \@gAll},
    RPS::DB::Item::IncomeSource::kIncomeSourceVPD()               => { ContractRateTypeID => \@gNetOnly },
    RPS::DB::Item::IncomeSource::kIncomeSourceDigitalAlbumPremium() => { ContractRateTypeID => \@gNoRetail },
    RPS::DB::Item::IncomeSource::kIncomeSourceDigitalTrackPremium() => { ContractRateTypeID => \@gNoRetail },
    RPS::DB::Item::IncomeSource::kIncomeSourceDigitalAlbumUpgrade() => { ContractRateTypeID => \@gNoRetail },
    RPS::DB::Item::IncomeSource::kIncomeSourceDigitalTrackUpgrade() => { ContractRateTypeID => \@gNoRetail },
    RPS::DB::Item::IncomeSource::kIncomeSourceDVD()               => { ContractRateTypeID => \@gAll },
    RPS::DB::Item::IncomeSource::kIncomeSourceVHS()               => { ContractRateTypeID => \@gAll},
);

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

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


    $self->{ValidRateTypes} = $gRateTypeMap{$props->{income_source_id}};
}


###
1;#
###
