package RPS::Import::WMG::WarnerMobile9;

use strict;
use warnings;

use lib '/app/tools/rps/lib';
use RPS::File::Sale;

use Date::Calc qw(Days_in_Month Decode_Month);

use base 'RPS::Import::Importer';

sub _fieldMap {
    {
        dateBegin       => 'A',
        dateEnd         => 'A',
        productType     => 'J',
        artistName      => 'M',
        upc             => 'I',
        albumName       => 'N',
        units           => 'Q',
        totalRevenue    => 'V',
        sales           => 'Q',
        salesRevenue    => 'T',
        returns         => 'R',
        returnsRevenue  => 'U',
        mediaType       => 'J',
    }
}

sub _headerIdentifier { upc => 'UPC' }

sub physical          { 1 }
sub currencyCode      { 'USD' }
sub countryCode       { 'US' }
sub channel           { RPS::File::Sale::CHANNEL_RETAIL }
sub priceLevel        { RPS::File::Sale::PLEVEL_FULL }

sub saleDates {
    my $self = shift;

    my $period = $self->_getByFieldName("dateBegin") || '';

    my ($dateBegin, $dateEnd);
    if ( $period =~ /^(\d{4})-(\d{1,2})-(\d{1,2})$/ ) {
        $dateBegin = sprintf "%04d-%02d-%02d", $1, $2, $3;
        $dateEnd   = sprintf "%04d-%02d-%02d", $1, $2, Days_in_Month($1, $2);
    }

    return $self->_getDates( date_begin => $dateBegin, date_end => $dateEnd );
}


sub productType {
    my $self = shift;

    my $type = $self->_getByFieldName('productType') || '';

    return RPS::File::Sale::TYPE_CD if $type eq "CD";

    $self->fail("Could not parse product type from '$type'");
}

sub mediaType {
    my $self = shift;

    my $type = $self->_getByFieldName('mediaType') || '';

    return RPS::DB::Item::MediaType::kMediaTypeAudio if $type eq "CD";

    $self->fail("Could not parse media type from '$type'");
}


1;
