package RPS::Import::Red3;

use strict;

use Date::Calc qw(Days_in_Month Decode_Month);

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

sub _fieldMap
{
    {
        type            => 'E',
        configuration   => 'E',
        artistName      => 'C',
        clientProductID => 'G',
        upc             => 'F',
        albumName       => 'D',
        sales           => 'I',
        salesRevenue    => 'J',
        returns         => 'K',
        returnsRevenue  => 'L',
        totalRevenue    => 'N',
    }
}

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

sub _isValidSaleRecord
{
    my $self = shift;
    return $self->albumName && ($self->salesRevenue || $self->returnsRevenue);
}

sub channel       { RPS::File::Sale::CHANNEL_RETAIL } 
sub priceLevel    { RPS::File::Sale::PLEVEL_UNKNOWN }
sub currencyCode  { 'USD' }
sub physical      { 1 }

sub _productTypes
{
    {
        '16' =>
        {
            productType => RPS::File::Sale::TYPE_LP,
        },
        '31' =>
        {
            productType => RPS::File::Sale::TYPE_CD,
        },
    }
}

sub countryCode
{
    my $self = shift;
    my ($countryCode) = $self->filename =~ /RED[-\s](CA)(?:n|nada)?/i;  # CA, CAN or CANADA
    return $countryCode;
}

sub _getDateBegin
{
    my $self = shift;
    my $dateBegin;
    if ($self->filename =~ m/(sep(?:tember)?|oct(?:ober)?|nov(?:ember)?|dec(?:ember)?|jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)|may|jun(?:e)?|jul(?:y)?|aug(?:ust)?) (\d{4})/i)
    {
        my $month = Decode_Month($1);
        my $year  = $2;
        $dateBegin = sprintf("%04d-%02d-%02d", $year, $month, 1);
    }
    return $dateBegin;
}

sub returns
{
    my $self = shift;
    my $returns = $self->_getByFieldName('returns');
    return abs($returns);
}

sub returnsRevenue
{
    my $self = shift;
    my $returnsRevenue = $self->_getByFieldName('returnsRevenue');
    return abs($returnsRevenue);
}

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