package BookPub::Import::Importer::BolindaDigital::Version13;

use strict;
use warnings;

use lib '/app/tools/common/lib';
use Common::CurrencyFormat;

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

sub _fieldMap {
    {
        dateBegin          => 'A2',
        dateEnd            => 'A2',
        rProductType       => 'C',
        rAuthor            => 'E',
        rTitle             => 'D',
        rIsbn13            => 'B',
        rImprint           => 'G',
        countryCode        => 'A',
        rUnits             => 'J',
        rListPrice         => 'H',
        rCOGS              => 'I',
        rRevenue           => 'L',
        currencyCode       => 'L',
    };
}

sub _unverifiedFieldMap {
    {
        subtotalCheck => 'K'
    }
}

sub currencyCode { shift->{_currency} }
sub rListPriceCurrency { shift->currencyCode() }

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

sub _getDateBegin {
    my $self = shift;

    my $date = $self->_getByFieldName('dateBegin') || '';
    if ( $date =~ /(\d{2})\/(\d{2})\/(\d{4}) (?:-|to) \d{2}\/\d{2}\/\d{4}/i ) {
        return sprintf( "%04d-%02d-%02d", $3, $2, $1 );
    }

    $self->fail("Unable to determine date_begin from: '$date'.");
}

sub _getDateEnd {
    my $self = shift;

    my $date = $self->_getByFieldName('dateEnd') || '';
    if ( $date =~ /\d{2}\/\d{2}\/\d{4} (?:-|to) (\d{2})\/(\d{2})\/(\d{4})/ ) {
        return sprintf( "%04d-%02d-%02d", $3, $2, $1 );
    }

    $self->fail("Unable to determine date_end from: '$date'.");
}

sub _processHeader {
    my $self = shift;

    return unless $self->_isHeader;

    my $header = $self->_getByFieldName('currencyCode') || '';
    if ( $header =~ / (\w{3})$/ ) {
        $self->{_currency} = $1;
    }

    return $self->SUPER::_processHeader;
}


1;
