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



