package BookPub::Import::Importer::CNPeReading::Version3;

use strict;
use warnings;

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

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

sub _fieldMap {
    {
        dateBegin            => 'B',
        priceTypeQualifierID => 'A',
        rTitle               => 'D',
        rIsbn13              => 'C',
        rImprint             => 'J',
        rInstitution         => 'A',
        rUnits               => 'E',
        rListPrice           => 'G',
        rListPriceCurrency   => 'F',
        rDiscount            => 'H',
        rRevenue             => 'I',
        currencyCode         => 'F',
    }
}

sub _headerIdentifier { rIsbn13 => 'eISBN' }

sub _useIsSaleRec        { 1 }
sub priceType            { 'rrp' }
sub countryCode          { 'CN' }
sub productType          { BookPub::DB::Item::Sale::kProductTypeEBook }
sub rProductType         { BookPub::DB::Item::Sale::kProductTypeEBook }
sub purchaseType         { BookPub::DB::Item::Sale::kPurchaseTypeDownload }
sub priceTypeQualifierID { BookPub::DB::Item::PriceTypeQualifier::kCorporate }
sub _autoParseTitleAndSubtitle { 1 }

sub rServiceName {
    return BookPub::Tracker::Service::GetDefaultServiceName(
        service_id => shift->serviceID
    );
}

sub discount {
    my $self = shift;

    my $discount = $self->_getByFieldName('rDiscount') || 0;
    $discount = 1 - $discount;

    return $discount;
}

sub _getDateBegin {
    my $self = shift;

    my $date = $self->_getByFieldName('dateBegin') || '';
    return $date if $date =~ /^\d{4}-[01]\d-[0-3]\d$/;

    $self->fail("Cannot determine sales date from: '$date'");
}

sub rUnitPrice {
    my $self = shift;

    return $self->rRevenue / ($self->rUnits || 1 );
}

sub isFree {
    my $self = shift;

    return !$self->rRevenue && $self->rUnits ? 'Y' : 'N';
}

sub _isSaleRec {
    my $self = shift;

    return unless $self->rTitle;
    return $self->SUPER::_isSaleRec;
}


1;
