#---------------------------------------------------------------
# ____                   _ _         ____  _
#|  _ \ ___  _   _  __ _| | |_ _   _/ ___|| |__   __ _ _ __ ___
#| |_) / _ \| | | |/ _` | | __| | | \___ \| '_ \ / _` | '__/ _ \
#|  _ < (_) | |_| | (_| | | |_| |_| |___) | | | | (_| | | |  __/
#|_| \_\___/ \__, |\__,_|_|\__|\__, |____/|_| |_|\__,_|_|  \___|
#            |___/             |___/
#
# Copyright (C) 2012 RoyaltyShare, Inc.   All Rights Reserved
#---------------------------------------------------------------

package RPS::ArtistRoyalty::Fast::Final::ArtistContractTermReserve;

use strict;
use Data::Dumper;
use File::Path;

use lib '/app/tools/common/lib';
use lib '/app/tools/rps/lib';
use lib '/app/tools/raptor/lib';
use Common::RSApp;
use Common::RSDB;

use Data::Dumper;
use DB_File;

use Common::Log;

use base 'RPS::ArtistRoyalty::Fast::Final';

# These are quite similar to the fields in the Reserve.pm package.
# Which isn't surprising, since they are the same table.
#
use constant kArtistContractTermReserveID => 0;
use constant kArtistContractTermID        => 1;
use constant kIncomeSourceID              => 2;
use constant kRegionID                    => 3;
use constant kChannelID                   => 4;
use constant kPriceLevelID                => 5;
use constant kOriginalStatementItemID     => 6;
use constant kProductID                   => 7;
use constant kProductFormatID             => 8;
use constant kUnits                       => 9;
use constant kRevenue                     => 10;
use constant kPrice                       => 11;
use constant kRevenueBased                => 12;
use constant kEffectiveRate               => 13;
use constant kPeriodsRemaining            => 14;
use constant kAlbumID                     => 15;
use constant kTrackID                     => 16;
use constant kProrateTrackCount           => 17;

my @gFields = (
    'artist_contract_term_reserve_id', 'artist_contract_term_id', 'income_source_id',           'region_id',
    'channel_id',                      'price_level_id',          'original_statement_item_id', 'product_id',
    'product_format_id',               'units',                   'revenue',                    'price',
    'revenue_based',                   'effective_rate',          'periods_remaining',          'album_id',
    'track_id',                        'prorate_track_count',
);

sub Fields { return \@gFields; }

sub FileName  { 'artist_contract_term_reserve' }
sub _MaxIDSql { 'SELECT MAX(artist_contract_term_reserve_id) FROM artist_contract_term_reserve' }

#sub GetCurrentMaxID
#{
#    my ($class) = @_;
#
#    return 0;
#}

my $gRunID;

sub Init {
    my ( $class, $outputDirectory, $runID ) = @_;

    # Call the inherited method first.
    #
    $class->SUPER::Init($outputDirectory);

    $gRunID = $runID;
}

sub new {
    my ($class) = @_;

    my $item = $class->BlankItem();
    $class->_IncrementID();
    $item->[kArtistContractTermReserveID] = $class->_CurrentID();

    return bless( $item, $class );
}

1;

