package RPS::Import::EMusicAudioBookBFM;

use strict;

use Date::Calc qw(Days_in_Month Decode_Month);

use lib '/app/tools/common/lib';
#use Common::Util;
use Common::Util qw(normalize_date normalize_isrc);
use Common::Consts qw(%COUNTRY_CODE);

use lib '/app/tools/data_classes/lib';
use Client::Service;

use lib '/app/tools/rps/lib';
use RPS::File::Sale;
use RPS::Import::Importer;
use base 'RPS::Import::Importer';

my %field_map = (
    19 =>
    {
        statement_col=>1,
        date_col => 3,
        service_product_id => 0,
        client_product_id => 1,
        artist => 2,
        album => 4,
        units => 7,
        revenue => 9,
    },
);

#public methods

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

    my $lines = $args{lines};
    my $version = $args{file}->VersionNum();
    my $fileName = $args{file}->OrigFileName();
    my $fileObj = $args{file};
    my $clientID = $args{client_id};
    
    print STDERR "Client id: $clientID\n";
    
    if($clientID != 4){
         $self->errstr("Client not BFM digital, import cannot continue");
         print STDERR "Client not BFM digital, import cannot continue";
         return undef;
    }
    
    my @sheets = @{ $args{sheets} };

    return undef unless ($lines);

    my $linenum = 1;
            
    my $offsets = $field_map{$version};
    my %errors = ();
    
    my($dateBegin, $dateEnd); 
    
    my $format =  RPS::File::Sale::FORMAT_DOWNLOAD;
    my $type   =  RPS::File::Sale::TYPE_ALBUM;
    
    
    foreach my $line(@$lines)
    {
        my $album = $line->[$offsets->{album}];
        my $artist = $line->[$offsets->{artist}];
        my $units = $line->[$offsets->{units}];
        my $revenue = $line->[$offsets->{revenue}];  
        my $service_product_id = $line->[$offsets->{service_product_id}];
        my $client_product_id = $line->[$offsets->{client_product_id}];      
        
        my $price = abs($revenue);
        
        $price /= abs($units) if($units != 0);
        
        my $f_dateBegin;
        
        $f_dateBegin =~ s/\d{2},//;
        
        if($line->[$offsets->{statement_col}] =~ /statement summary/i){
             $f_dateBegin = $line->[$offsets->{date_col}];
             ($dateBegin, $dateEnd) = 
             $self->_getDates(date_begin=>$f_dateBegin, type=>"text");
            
        }
                  
        if($album && $artist && $units =~ /\d+/ && $revenue =~ /\d+/ &&
        $service_product_id && $client_product_id) 
        {
             unless ($dateBegin && $dateEnd) {
                $self->errstr("couldn't get dates from $f_dateBegin");
                print STDERR "couldn't get dates from $f_dateBegin";
                return undef;
            }           
            my $sale = RPS::Import::SaleRec->new();
            $sale->productType($type);
            $sale->formatType($format);
            $sale->mediaType(1);
            $sale->serviceProductID($service_product_id);
            $sale->clientProductID($client_product_id);                       
            $sale->albumName($album);
            $sale->artistName($artist);
            $sale->units($units); 
            $sale->price($price);           
            $sale->dateBegin($dateBegin);
            $sale->dateEnd($dateEnd);
            $sale->countryCode('US');
            $sale->currencyCode('USD');
            $sale->lineNum($linenum);
            
            #$args{dumper}($sale);  ## for cmd-line testing
            
            $self->_insertSale(sale => $sale);
        }
        
        $linenum++;
    }
    

    return $linenum;
}

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