package RPS::Import::Red2;

use strict;

use Date::Calc qw(Days_in_Month Decode_Month);

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

sub _fieldMap {
    {
        labelName       => 'C',
        type            => 'I',
        configuration   => 'I',
        artistName      => 'D',
        clientProductID => 'G',
        upc             => 'H',
        albumName       => 'E',
        sales           => 'N',
        totalRevenue    => 'P',
    };
}

sub _headerIdentifier { ( upc => 'UPC' ) }

sub _isValidSaleRecord {
    my $self = shift;

    return $self->albumName && $self->SUPER::sales;
}

sub channel    { RPS::File::Sale::CHANNEL_RETAIL }
sub priceLevel { RPS::File::Sale::PLEVEL_UNKNOWN }

sub _productTypes {
    {
        'lp' => {
            productType => RPS::File::Sale::TYPE_LP,
        },
        'cd' => {
            productType => RPS::File::Sale::TYPE_CD,
        },
        'si' => {
            productType => RPS::File::Sale::TYPE_LP5,
        },
    };
}

sub sales {
    my $self = shift;

    my $sales = $self->SUPER::sales();
    $sales = 0 if ( $sales < 0 );

    return $sales;
}

sub returns {
    my $self = shift;

    my $returns = $self->SUPER::sales();
    $returns = 0 if ( $returns > 0 );

    return abs($returns);
}

sub salesRevenue {
    my $self = shift;

    my $salesRevenue = $self->totalRevenue;
    $salesRevenue = 0 if ( $salesRevenue < 0 );

    return $salesRevenue;
}

sub returnsRevenue {
    my $self = shift;

    my $returnsRevenue = $self->totalRevenue;
    $returnsRevenue = 0 if ( $returnsRevenue > 0 );

    return abs($returnsRevenue);
}

sub totalRevenue {
    return Common::RSMath::round( shift->SUPER::totalRevenue, 2 );
}

sub countryCode {
    my $self = shift;

    my ($countryCode) = $self->filename =~ /^RED-(CA)/;

    return $countryCode;
}

sub _getDateBegin {
    my $self = shift;

    my $dateBegin;
    if ( $self->filename =~ m/(september|october|november|december|january|february|march|april|may|june|july|august) (\d{4})/i ) {
        my $month = Decode_Month($1);
        my $year  = $2;
        $dateBegin = sprintf( "%04d-%02d-%02d", $year, $month, 1 );
    }

    return $dateBegin;
}

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