package BookPub::Import::Importer::Amazon::Version25;

use strict;

use Date::Calc qw( Add_Delta_YM );

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

# Same format as version 15, but with translated headers.


sub _fieldMap {
    my $self = shift;

    my %map = (
        25 => {
            serviceProductID   => 'B',
            currencyCode       => 'U',
            dateBegin          => 'A',
            rFormat            => 'I',
            isbn               => 'E',
            rTitle             => 'F',
            rAuthor            => 'G',
            rImprint           => 'H',
            rUnits             => 'L',
            rSales             => 'J',
            rReturns           => 'K',
            rAdjustments       => 'N',
            rPurchasePrice     => 'O',
            rListPrice         => 'Q',
            rListPriceCurrency => 'R',
            rDiscount          => 'S',
            rRevenue           => 'T',
        },
        69 => {
            dateBegin          => 'A',
            rFormat            => 'I',
            rAuthor            => 'G',
            rTitle             => 'F',
            rIsbn13            => 'E',
            rImprint           => 'H',
            serviceProductID   => 'B',
            rReturns           => 'K',
            rSales             => 'J',
            rUnits             => 'L',
            rAdjustments       => 'N',
            rListPrice         => 'Q',
            rListPriceCurrency => 'R',
            rPurchasePrice     => 'O',
            rDiscount          => 'S',
            rRevenue           => 'T',
            currencyCode       => 'U',
            rModel             => 'V',
        },
    );

    return $map{ $self->version };
}

sub _headerIdentifier { ( dateBegin => 'Data da fatura (Invoice Date)' ) }

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

sub _getDateBegin {
    my $self = shift;
    my $date = $self->_getByFieldName('dateBegin') || return;

    if ( $date && $date =~ /(\d{1,2})\/(\d{1,2})\/(\d{4})/ ) {

        my ( $year, $month, $day ) = Add_Delta_YM( $3, $2, $1, 0, -1 );

        return sprintf( "%04d-%02d-%02d", $year, $month, $day );
    }
}

sub rTitle {
    my $self = shift;

    my $title = $self->SUPER::rTitle();
    my $subtitle;
    ( $title, $subtitle ) = BookPub::Import::Importer::ParseTitleAndSubtitle($title);

    return $title;
}

sub rSubtitle {
    my $self = shift;

    my $title = $self->SUPER::rTitle();
    my $subtitle;
    ( $title, $subtitle ) = BookPub::Import::Importer::ParseTitleAndSubtitle($title);

    return $subtitle;
}

sub rFormat {
    my $self = shift;

    my $rFormat = $self->_getByFieldName('rFormat');
    $rFormat =~ s/Kindl eBook/Kindle eBook/ig;

    return $rFormat;
}

sub isFree {
    my $self = shift;

    my $revenue = $self->_getByFieldName("rRevenue") || 0;
    my $units = $self->_getByFieldName("rUnits") || 0;

    $revenue =~ s/^0\.0+$/0/g;

    return !$revenue && $units ? 'Y' : 'N';
}

1;
