package RPS::Import::Seed::v2;

use strict;
use warnings;

use lib '/app/tools/rps/lib';

use RPS::Import::ServiceMap;
use Date::Calc qw(Days_in_Month);

use base 'RPS::Import::Seed::v1';

sub _fieldMap {
    {
        labelName        => 'I',
        serviceID        => 'N',
        countryCode      => 'P',
        dateBegin        => 'M',
        productType      => 'E',
        formatType       => 'R',
        artistName       => 'C',
        clientProductID  => 'B',
        upc              => 'J',
        albumName        => 'D',
        isrc             => 'K',
        trackName        => 'D',
        units            => 'V',
        price            => 'Y',
        mediaType        => 'G'
    };
}

sub _headerIdentifier { upc => 'UPC/EAN' }

sub currencyCode { 'USD' }

sub _processSheet {
    my ($self, $sheet, $sheetnum) = @_;

    my $sheetname = $self->{sheetname};
    # get a date from the 'B3' cell on the Summary sheet
    if ($sheetname =~ /^Summary/i) {
        my $date = $sheet->[2][1];
        ($self->{_summary_date_begin}) = $date =~ /^(.+?) -/;
    }

    return $self->SUPER::_processSheet($sheet, $sheetnum)
}

sub saleDates {
    my $self  = shift;

    my ($m, $d, $y);
    my $date = $self->_getByFieldName('dateBegin') || $self->{_summary_date_begin} || "";

    if ( ($m, $d, $y) = $date =~ /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/ )
    {
        ($m, $d) = ($d, $m) if $m > 12;
    }
    elsif ( $self->filename =~ /(\d{2})(\d{4})/ ) {
        ($m, $y) = ($1, $2);
    }

    return (sprintf("%04d-%02d-%02d", $y, $m, 1), sprintf("%04d-%02d-%02d", $y, $m, Days_in_Month($y, $m))) if ($y && $m);


    $self->fail( "Could not determine date from '$date'." );
}

1;
