package BookPub::Import::Importer::txtr::Version7;

use strict;

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

sub _fieldMap {
    {
        currencyCode       => 'Z',    # From header line
        purchaseType       => 'H',
        priceType          => 'V',
        countryCode        => 'P',
        dateBegin          => 'O',
        rIsbn13            => 'E',
        rTitle             => 'G',
        rSales             => 'H',
        rReturns           => 'H',
        rListPrice         => 'R',
        rListPriceCurrency => 'Q',
        rDiscount          => 'W',
        rRevenue           => 'Z',
    };
}

sub _headerIdentifier { ( rTitle => 'Title' ) }
sub purchaseType      { BookPub::DB::Item::Sale::kPurchaseTypeDownload }
sub productType       { BookPub::DB::Item::Sale::kProductTypeEBook }
sub priceType         { 'rrp' }
sub _dateFormat       { ['iso'] }
sub _useIsSaleRec     { 1 }

sub discount {
    return 1 - shift->rDiscount;
}

sub units {
    my $revenue = shift->rRevenue || return 1;
    return $revenue < 0 ? -1 : 1;
}

sub isFree {
    shift->_getByFieldName('rRevenue') ? 'N' : 'Y';
}

sub rTitle    { shift->_titleSubtitle(0) }
sub rSubtitle { shift->_titleSubtitle(1) }

# Returns title if passed a 0, subtitle if passed a 1
sub _titleSubtitle {
    my $title  = shift->SUPER::rTitle();
    my $index  = shift || 0;
    my @result = BookPub::Import::Importer::ParseTitleAndSubtitle($title);
    return $result[$index];
}

# The field _currencyCode should be set by the _processHeader function below
sub currencyCode {
    my $self = shift;
    return $self->{_currencyCode} || die "No currency code specified in header";
}

sub _processHeader {
    my $self   = shift;
    my $header = $self->_getByFieldName('currencyCode');
    if ( $header =~ m/Net Publisher Share \(([A-Z]{3})\)/ ) { $self->{_currencyCode} = $1 }
    return $self->SUPER::_processHeader(@_);
}

1;
