package BookPub::Import::Importer::Sony::Version4;

use strict;

use lib '/app/tools/bookpub/lib';
use BookPub::DB::Item::Sale;
use BookPub::Import::SaleRec;
use base 'BookPub::Import::Importer';

# map of data columns
my %FIELD_MAP = (
    transaction => 0,
    country     => 1,

    #state           => 2,
    #zipcode         => 3,
    dateSale  => 5,
    isbn      => 6,
    title     => 7,
    units     => 8,
    listPrice => 9,
    discount  => 10,
    revenue   => 14,
);

#public methods

sub _importLines {
    my $self = shift;
    my %args = @_;

    my $lines     = $args{lines};
    my $saleCount = 0;

    for ( my $i = 4 ; $i < scalar @$lines ; $i++ ) {
        my $line = $lines->[$i];

        #my $transType   = $line->[ $FIELD_MAP{transaction} ];
        my $country   = $line->[ $FIELD_MAP{country} ];
        my $date      = $line->[ $FIELD_MAP{dateSale} ];
        my $isbn      = $line->[ $FIELD_MAP{isbn} ];
        my $title     = $line->[ $FIELD_MAP{title} ];
        my $units     = $line->[ $FIELD_MAP{units} ];
        my $listPrice = $line->[ $FIELD_MAP{listPrice} ];
        my $discount  = $line->[ $FIELD_MAP{discount} ] || 0;
        my $revenue   = $line->[ $FIELD_MAP{revenue} ];

        unless ( $revenue =~ m/\d/ && ( $isbn || $title ) ) {
            Common::Log::Print("skip based on revenue: '$revenue', isbn: '$isbn' ($i)");
            next;
        }

        my $unitPrice = $units ? $revenue / $units : 0;

        my $saleRec = BookPub::Import::SaleRec->new();

        # defaults
        $saleRec->productType(BookPub::DB::Item::Sale::kProductTypeEBook);
        $saleRec->formatType(BookPub::DB::Item::Sale::kFormatTypeEReader);
        $saleRec->purchaseType(BookPub::DB::Item::Sale::kPurchaseTypeDownload);
        $saleRec->currencyCode('USD');
        $saleRec->lineNum( $i + 1 );

        $saleRec->dateBegin($date);
        $saleRec->dateEnd($date);

        $saleRec->listPrice($listPrice);
        if ($unitPrice) {
            $saleRec->unitPrice($unitPrice);
            $saleRec->discount( BookPub::Import::Importer::CalculateDiscount( $unitPrice, $listPrice ) );
        }
        $saleRec->units($units);
        $saleRec->revenue($revenue);
        $saleRec->countryCode($country);

        $saleRec->isAgency('Y');
        $saleRec->rTitle($title);
        $saleRec->rUnits($units);
        $saleRec->rListPrice($listPrice);
        $saleRec->rDiscount($discount);
        $saleRec->rRevenue($revenue);

        length($isbn) > 10 ? $saleRec->rIsbn13($isbn) : $saleRec->rIsbn10($isbn);

        $args{dumper}($saleRec);

        #$self->_insertSale(sale => $saleRec);
        $saleCount++;
    }

    return $saleCount;
}

1;
