package BookPub::Import::Importer::Amazon::Version12;

use strict;

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

use Date::Calc qw( Add_Delta_YM );

sub _headerIdentifier { ( rTitle => 'title_18628' ) }

sub _fieldMap {
    {
        serviceProductID   => 'B',
        currencyCode       => 'U',
        countryCode        => 'V',
        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',
    };
}

sub rServiceName { 'Amazon' }
sub priceType    { 'rrp' }
sub purchaseType { BookPub::DB::Item::Sale::kPurchaseTypeDownload }
sub productType  { BookPub::DB::Item::Sale::kProductTypeEBook }

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 _dateNormalization { 'month' }

sub _isValidSaleRecord {
    my $self = shift;

    return unless $self->rRevenue;
    return ( ( $self->rTitle || $self->rAuthor || $self->rIsbn13 ) && $self->dateBegin );
}

sub rRevenue {
    my $revenue = shift->SUPER::rRevenue() || return;
    $revenue =~ s/,/./g;
    return $revenue;
}

sub rListPrice {
    my $price = shift->SUPER::rListPrice() || return;
    $price =~ s/,/./g;
    return $price;
}

sub rDiscount {
    my $discount = shift->SUPER::rDiscount() || return;
    $discount =~ s/,/./g;
    return $discount;
}

1;
