package BookPub::Import::Importer::Oyster::Version3;

use strict;

use lib '/app/tools/bookpub/lib';
use base 'BookPub::Import::Importer::Oyster';

sub _fieldMap {
    {
        rIsbn13     => 'B',
        rTitle      => 'C',
        rAuthor     => 'D',
        rImprint    => 'F',
        rSales      => 'H',
        rReturns    => 'I',
        rListPrice  => 'G',
        rDiscount   => 'K',
        rRevenue    => 'L',
        countryCode => 'A',
    };
}

sub priceType          { 'rrp' }
sub rListPriceCurrency { 'USD' }

sub _headerIdentifier { ( rIsbn13 => 'ISBN' ) }

sub dateBegin {
    my $self = shift;
    my $file = $self->filename;

    my ($startDate) = $file =~ /\ (\d{1,2})-(\d{1,2})-(\d{4}) through\ /;

    $self->fail("Failed to determine start date from filename ($file)") unless ($startDate);

    $startDate = sprintf( "%04d-%02d-%02d", $3, $1, $2 );
    my $date = new Common::Date( date => $startDate, type => 'iso' );

    return $date->monthBegin();
}

sub dateEnd {
    my $self = shift;
    my $file = $self->filename;

    my ($endDate) = $file =~ /through\ (\d{1,2})-(\d{1,2})-(\d{4})/;

    $self->fail("Failed to determine end date from filename ($file)") unless ($endDate);

    $endDate = sprintf( "%04d-%02d-%02d", $3, $1, $2 );
    my $date = new Common::Date( date => $endDate, type => 'iso' );

    return $date->monthEnd();
}

sub rRevenue {
    my $revenue = shift->SUPER::rRevenue() || return;
    $revenue =~ s/\$//g;
    return $revenue;
}

sub rListPrice {
    my $list = shift->SUPER::rListPrice() || return;
    $list =~ s/\$//g;
    return $list;
}

sub _isSaleRec {
    my $self = shift;

    # We're going to check for the subtotal line
    my $revenue = $self->_getByFieldName('rRevenue');
    if ( $revenue =~ /total due/i ) {
        return 0;
    }
    return $self->BookPub::Import::Importer::_isSaleRec();
}

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