package BookPub::Import::Importer::Google::Version16;

use strict;
use Data::Dumper;

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

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

sub _fieldMap {
    {
        isPreOrder         => 'E',
        currencyCode       => 'Y',
        conversionRate     => 'AA',
        countryCode        => 'Q',
        rState             => 'R',
        rPostalCode        => 'S',
        dateBegin          => 'B',
        rIsbn13            => 'H',
        rTitle             => 'K',
        rAuthor            => 'L',
        rImprint           => 'J',
        rUnits             => 'G',
        rSales             => 'D',
        rReturns           => 'D',
        rListPrice         => 'N',
        rListPriceCurrency => 'M',
        rPurchasePrice     => 'P',
        rDiscount          => 'V',
        rRevenue           => 'W',
    };
}

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

sub priceType { 'agency' }

sub units {
    my $self  = shift;
    my $units = $self->_getByFieldName('rUnits');

    return $units;
}

sub rIsbn13 {
    my $self    = shift;
    my $rIsbn13 = $self->_getByFieldName('rIsbn13');
    my $eIsbn   = $self->_getByFieldName('eIsbn');
    $rIsbn13 =~ s/'//g;
    $eIsbn =~ s/'//g;

    if ( !$eIsbn || $eIsbn eq 'N/A' ) {
        return $rIsbn13;
    }

    return $eIsbn;
}

sub rRevenue {
    my $self    = shift;
    my $rate    = $self->_getByFieldName('conversionRate');
    my $revenue = $self->_getByFieldName('rRevenue');

    if ( $rate > 0 ) {
        return $rate * $revenue;
    }

    return $revenue;
}

sub rSales {
    my $self  = shift;
    my $sales = $self->SUPER::rSales();

    return $sales eq "Sale" ? 1 : 0;
}

sub rReturns {
    my $self    = shift;
    my $returns = $self->SUPER::rReturns();

    return $returns eq "Refund" ? 1 : 0;
}

sub rDiscount {
    my $self     = shift;
    my $discount = $self->SUPER::rDiscount();

    return 1 - $discount;
}

###
1;    # Play nicely.
###
