package BookPub::Import::Importer::Odilo::Version5;

use strict;
use warnings;
use Common::UTF8;

use lib '/app/tools/bookpub/lib';
use BookPub::DB::Item::PriceTypeQualifier;
use parent 'BookPub::Import::Importer::Odilo::Version3';

sub _fieldMap {
    {
        dateBegin            => 'A',
        priceTypeQualifierID => 'K2',
        rAuthor              => 'D',
        rTitle               => 'C',
        rIsbn13              => 'B',
        rInstitution         => 'K',
        countryCode          => 'L',
        rUnits               => 'G',
        rListPrice           => 'F',
        rListPriceCurrency   => 'E',
        rDiscount            => 'H',
        rRevenue             => 'J',
        currencyCode         => 'E',
    };
}

sub _unverifiedFieldMap {
    {
        subtotalText => 'I',
    };
}

sub _headerIdentifier { rIsbn13 => 'ISBN' }

sub _useIsSaleRec              { 1 }
sub _autoParseTitleAndSubtitle { 1 }
sub productType                { BookPub::DB::Item::Sale::kProductTypeEBook }
sub rProductType               { BookPub::DB::Item::Sale::kProductTypeEBook }
sub purchaseType               { BookPub::DB::Item::Sale::kPurchaseTypeDownload }
sub priceType                  { 'rrp' }
sub rServiceName               { 'Odilo' }
sub rTitle                     { Common::UTF8::Encode( shift->_getByFieldName('rTitle')       || '' ) }
sub rInstitution               { Common::UTF8::Encode( shift->_getByFieldName('rInstitution') || '' ) }

sub priceTypeQualifierID {
    my $self = shift;

    my $priceTypeQualifier = $self->_getByFieldName('priceTypeQualifierID') || '';
    if ( $priceTypeQualifier =~ /Library/i  ) {
        return BookPub::DB::Item::PriceTypeQualifier::kCorporate;
    }
}

sub _isSaleRec {
    my $self = shift;

    my $subtotalText = $self->_getByFieldName('subtotalText') || '';
    my $revenue = $self->_getByFieldName('rRevenue')          || return;

    return if $subtotalText =~ /total/i;
    return $self->SUPER::_isSaleRec();
}

sub rUnits {
    my $self = shift;

    my $units = $self->_getByFieldName('rUnits') || '';
    $units =~ s/[.]//g if $units;

    return $units;
}

1;
