package BookPub::Import::Importer::Google::Version2;

use strict;

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

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

sub _fieldMap {
    {
        dateBegin  => 'D',
        isbn       => 'B',
        rTitle     => 'C',
        rListPrice => 'H',
        rSales     => 'H',
        rReturns   => 'H',
        rListPrice => 'I',
        rRevenue   => 'J',
    };
}

sub priceType    { 'rrp' }
sub purchaseType { BookPub::DB::Item::Sale::kPurchaseTypeDownload }
sub productType  { BookPub::DB::Item::Sale::kProductTypeEBook }
sub currencyCode { 'USD' }
sub countryCode  { 'US' }

sub listPrice { abs( shift->rListPrice ) }

sub rReturns {
    my $self = shift;
    my $return = $self->SUPER::rReturns || return undef;

    if ( lc($return) eq 'refund' ) {
        return 1;
    } elsif ( lc($return) eq 'charge' ) {
        return 0;
    } else {
        $self->fail("Unknown transaction type: $return");
    }
}

sub rSales {
    my $self = shift;
    my $sales = $self->SUPER::rSales || return undef;

    if ( lc($sales) eq 'refund' ) {
        return 0;
    } elsif ( lc($sales) eq 'charge' ) {
        return 1;
    } else {
        $self->fail("Unknown transaction type: $sales");
    }
}

sub _dateFormat { [ 'iso', 'us' ] }

sub _getDateBegin {
    my $date = shift->SUPER::_getDateBegin() || return;
    my ($d) = split( /\s/, $date );

    return $d;
}

sub isrc {
    my $self = shift;
    my $isrc = $self->_getFieldByName('isrc') || return;

    return $isrc eq 'NA' ? undef : $self->SUPER::isrc();
}

sub _isValidSaleRecord {
    my $self = shift;

    return $self->rTitle || $self->rIsbn10 || $self->rIsbn13 || $self->dateBegin;
}

1;
