package RPS::Import::MalcoRecords::Physical;

use strict;

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

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

use Data::Dumper;

sub physical     { 1 }
sub currencyCode { 'USD' }

sub _isValidSaleRecord {
    my $self = shift;
    my $units = $self->units || return;

    return $self->SUPER::_isValidSaleRecord();
}

sub sales {
    my $self = shift;
    my $units = $self->units;
    return $units >= 0 ? $units : 0;
}

sub returns {
    my $self = shift;
    my $units = $self->units;
    return $units < 0 ? abs($units) : 0;
}

sub salesRevenue {
    my $revenue = shift->totalRevenue;
    return $revenue >= 0 ? $revenue : 0;
}

sub returnsRevenue {

    my $revenue = shift->totalRevenue;
    return $revenue < 0 ? abs($revenue) : 0;
}

sub priceLevel {
    my $self = shift;
    my $level = lc($self->_getByFieldName( 'priceLevel' ));

    if ($level eq 'mp') {
        return RPS::File::Sale::PLEVEL_MID;
    } elsif ($level eq 'fp') {
        return RPS::File::Sale::PLEVEL_FULL;
    }

    $self->fail( "Unknown price level '$level'" );
}


sub channel {
    my $self = shift;
    my $channel = lc($self->_getByFieldName( 'channel' ));

    if ($channel eq 'norm') {
        return RPS::File::Sale::CHANNEL_RETAIL;
    }

    $self->fail( "Unknown channel '$channel'" );
}


sub productType {
    my $self = shift;
    my $config = $self->_getByFieldName( 'productType' );

    if ($config eq '09') {
        return RPS::File::Sale::TYPE_DVD;
    } elsif ($config eq '03') {
        return RPS::File::Sale::TYPE_CD;
    } elsif ($config eq '02') {
        return RPS::File::Sale::TYPE_CASS;
    } elsif ($config eq '06') {
        return RPS::File::Sale::TYPE_VHS;
    }

    $self->fail( "Unknown product type '$config'" );
}


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