#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#------------------------------------------------------------
package RPS::Contract::PhysicalTerm;

use strict;
use Carp;
use Data::Dumper;

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

use lib '/app/tools/rps/lib';
use RPS::DB::Item::ArtistContractTerm;

use RPS::XMLObject;
use RPS::Contract::Term;
use base 'RPS::Contract::Term';

sub _propertiesFromDBItem {
    my ( $self, $hrProperties, $dbItem ) = @_;

    $self->SUPER::_propertiesFromDBItem( $hrProperties, $dbItem );

    $hrProperties->{channel_id}     = $dbItem->channel_id;
    $hrProperties->{price_level_id} = $dbItem->price_level_id;
}

sub _initProperties {
    my ( $self, $props ) = @_;

    $self->SUPER::_initProperties($props);

    $self->{ChannelID}    = RPS::XMLObject::Scalar::Integer->new( value => $props->{channel_id},     required => 1 );
    $self->{PriceLevelID} = RPS::XMLObject::Scalar::Integer->new( value => $props->{price_level_id}, required => 1 );
}

sub _propertiesFromDefaults {
    my ( $self, $hrProperties, $contractID, $formatID ) = @_;

    $self->SUPER::_propertiesFromDefaults( $hrProperties, $contractID, $formatID );

    $hrProperties->{contract_mode} = RPS::DB::Item::ArtistContract::kModeUnit;
}

sub validate {
    my ($self) = @_;

    my $valid = 1;
    if ( defined $self->ProductFormatID || defined $self->Percent() || defined $self->ChannelID() || defined $self->PriceLevelID() ) {
        $valid = $self->SUPER::validate();

        if ( $self->Percent() <= 0 ) {
            $self->{Percent}->setError(RPS::XMLObject::kErrFieldInvalid);
            $valid = 0;
        }
    }
    return $valid;
}

sub _saveSetDBObj {
    my ( $self, $dbObj ) = @_;

    $self->SUPER::_saveSetDBObj($dbObj);

    $dbObj->channel_id( $self->ChannelID() );
    $dbObj->price_level_id( $self->PriceLevelID() );
}

###
1;    #
###

