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.
###
