package RPS::Import::7Digital::v12;

use strict;

use Date::Calc qw(Days_in_Month);

use Data::Dumper;

use lib '/app/tools/common/lib';

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

use base 'RPS::Import::7Digital::v11';

sub _fieldMap {
    {
        # header
        dateBegin => 'A2',
        dateEnd   => 'B2',

        # detail
        labelName   => 'H',
        upc         => 'G',
        albumName   => 'C',
        isrc        => 'F',
        trackName   => 'E',
        price       => 'O',
        countryCode => 'J',
    };
}

sub _unverifiedFieldMap {
    {
        albumArtist => 'B',
        trackArtist => 'D',
        bundleTrack => 'K',
    };
}

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

sub currencyCode {
    my $self = shift;
    return $self->{_currencyCode};    # From header; see _preProcess
}

sub saleDates {
    my $self  = shift;
    my $sdate = $self->_getByFieldName('dateBegin');
    my $edate = $self->_getByFieldName('dateEnd');

    my $dateBegin;
    my $dateEnd;
    if ( $sdate =~ /(2\d{3})(\d{2})(\d{2})/ ) {
        my ( $sYear, $sMonth, $sDay ) = ( $1, $2, $3 );
        if ( $edate =~ /(2\d{3})(\d{2})(\d{2})/ ) {
            $dateBegin = sprintf( "%04d-%02d-%02d", $sYear, $sMonth, $sDay );
            $dateEnd   = sprintf( "%04d-%02d-%02d", $1,     $2,      $3 );
        }
    }
    return ( $dateBegin, $dateEnd );
}

sub productType {
    my $self   = shift;
    my $bundle = $self->_getByFieldName('bundleTrack');
    return ( $bundle == 1 ) ? RPS::File::Sale::TYPE_TRACK : RPS::File::Sale::TYPE_ALBUM;
}

sub _preProcess {
    my $self = shift;
    my %args = @_;
    $self->SUPER::_preProcess(%args);

    foreach my $line ( @{ $args{lines} } ) {
        $self->{line} = $line;
        my $price = $self->_getByFieldName('price');
        if ( $price =~ /Label Revenue \((\w{3})\)/i ) {
            $self->{_currencyCode} = $1;
            last;
        }
    }
    if ( !$self->{_currencyCode} ) {
        print STDERR "_preProcess: unable to get country code from header\n";
        $self->errstr("Unable to get country code");
        return undef;
    }
}

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