package RPS::Import::INGrooves::v24;

use strict;

use lib '/app/tools/common/lib';
use Common::Date;
use Common::Country;

use lib '/app/tools/rps/lib';
use base 'RPS::Import::INGrooves::v18';

sub _fieldMap
{
    {
        labelName        => 'M',
        serviceID        => 'B',
        countryCode      => 'K',
        dateBegin        => 'A',
        productType      => 'P', # PRODUCT TYPE
        formatType       => 'O', # ASSET TYPE
        mediaType        => 'N', # SALES TYPE
        artistName       => 'C',
        serviceProductID => 'J', # CATALOG
        upc              => 'E',
        albumName        => 'D',
        isrc             => 'H',
        trackName        => 'F',
        units            => 'R',
        currencyCode     => 'U',
        free             => 'Q',
        price            => 'U',
    }
}

my %gSaleAssetProductType =
(
    'album downloads' => {
        'album' => {
            'audio album' => {
                product_type    => RPS::File::Sale::TYPE_ALBUM,
                format_type     => RPS::File::Sale::FORMAT_DOWNLOAD,
                media_type      => RPS::DB::Item::MediaType::kMediaTypeAudio,
            },
            'high quality audio album' => {
                product_type    => RPS::File::Sale::TYPE_ALBUM,
                format_type     => RPS::File::Sale::FORMAT_DOWNLOADPREMIUM,
                media_type      => RPS::DB::Item::MediaType::kMediaTypeAudio,
            },
        },
    },
    'download (cma)' => {
        'album completion' => {
            'audio album' => {
                product_type    => RPS::File::Sale::TYPE_ALBUM,
                format_type => RPS::File::Sale::FORMAT_DOWNLOAD,
                media_type  => RPS::DB::Item::MediaType::kMediaTypeAudio,
            },
        },
    },
    'cloud streaming (track)' => {
        'track' => {
            'audio album' => {
                product_type    => RPS::File::Sale::TYPE_TRACK,
                format_type     => RPS::File::Sale::FORMAT_STREAM,
                media_type      => RPS::DB::Item::MediaType::kMediaTypeAudio,
            },
        },
    },
    'interactive stream (track)' => {
        'track' => {
            'audio album' => {
                product_type => RPS::File::Sale::TYPE_TRACK, 
                format_type  => RPS::File::Sale::FORMAT_STREAM,
                media_type   => RPS::DB::Item::MediaType::kMediaTypeAudio
            },
            'high quality audio album' => {
                product_type => RPS::File::Sale::TYPE_TRACK, 
                format_type  => RPS::File::Sale::FORMAT_STREAM,
                media_type   => RPS::DB::Item::MediaType::kMediaTypeAudio
            },
        },
    },
    'non-interactive stream (track)' => {
        'track' => {
            'audio album' => {
                product_type    => RPS::File::Sale::TYPE_TRACK,
                format_type     => RPS::File::Sale::FORMAT_STREAM,
                media_type      => RPS::DB::Item::MediaType::kMediaTypeAudio,
            },
        },
    },
    'radio streaming (track)' => {
        'track' => {
            'audio album' => {
                product_type    => RPS::File::Sale::TYPE_TRACK,
                format_type     => RPS::File::Sale::FORMAT_STREAM,
                media_type      => RPS::DB::Item::MediaType::kMediaTypeAudio,
            },
        },
    },
    'streaming (track)' => {
        'track' => {
            'audio album' => {
                product_type    => RPS::File::Sale::TYPE_TRACK,
                format_type     => RPS::File::Sale::FORMAT_STREAM,
                media_type      => RPS::DB::Item::MediaType::kMediaTypeAudio,
            },
        },
    },
    'tethered download (track)' => {
        'track' => {
            'audio album' => {
                product_type    => RPS::File::Sale::TYPE_TRACK,
                format_type     => RPS::File::Sale::FORMAT_TETHERED,
                media_type      => RPS::DB::Item::MediaType::kMediaTypeAudio,
            },
        },
    },
    'track downloads' => {
        'track' => {
            'audio album' => {
                product_type    => RPS::File::Sale::TYPE_TRACK,
                format_type     => RPS::File::Sale::FORMAT_DOWNLOAD,
                media_type      => RPS::DB::Item::MediaType::kMediaTypeAudio,
            },
        },
    },
);
    
sub free {
    my $self = shift;
    my $units = $self->_getByFieldName( 'units' );
    my $price = $self->_getByFieldName( 'price' );

    # Check the transaction type to see if the sale is marked 'free'
    #
    my $free = $self->SUPER::free =~ /giveaway/i;

    # Lines with +/- units and 0 revenue are also considered free
    #
    $free = 1 if( $units && 0 == $price );

    return $free;
}


###
1;# Play nicely.
###
