#------------------------------------------------------------
# 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,            RPS::DB::Item::ContractRateType::kRateTypePercentGrossRevenue
);

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,     RPS::DB::Item::ContractRateType::kRateTypePercentGrossRevenue
);

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

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

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 },
    RPS::DB::Item::IncomeSource::kIncomeSourceEphemeral()           => { ContractRateTypeID => \@gNetOnly },
    RPS::DB::Item::IncomeSource::kIncomeSourceNonEphemeral()        => { ContractRateTypeID => \@gNetOnly },
    RPS::DB::Item::IncomeSource::kIncomeSourceOrchardSync()         => { ContractRateTypeID => \@gNetOnly },
);

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

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

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

###
1;    #
###
