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

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

use lib '/app/tools/common/lib';
use Common::Timer;
use Common::DB::Item::Country;

use lib '/app/tools/rps/lib';
use RPS::DB::Item::LabelRoyaltyLabelItem;
use RPS::Label::Label;
use RPS::DB::Item::Service;

use Common::FormObject;
use base 'Common::FormObject';


sub _init
{
    my ($self, %args) = @_;

    $self->SUPER::_init(%args);


    my %properties;
    if ($args{_dbItem})
    {
        $self->_propertiesFromDBItem(\%properties, $args{_dbItem});
    }
    elsif ($args{labelRoyaltyLabelItemID})
    {
        $self->_propertiesFromDB(\%properties, $args{labelRoyaltyLabelItemID});
    }
    else
    {
        $self->_propertiesFromDefaults(\%properties);
    }

    $self->_initProperties(\%properties);
    $self->_initSubs(\%properties);

    return $self;
}


sub _propertiesFromDB
{
    my ($self, $hrProperties, $id) = @_;

    my $dbItem = RPS::DB::Item::LabelRoyaltyLabelItem->Lookup(label_royalty_label_item_id => $id);
    return $self->_propertiesFromDBItem($hrProperties, $dbItem);
}


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

    $hrProperties->{label_royalty_label_item_id}		= $dbItem->label_royalty_label_item_id;
    $hrProperties->{label_royalty_statement_id}	= $dbItem->label_royalty_statement_id;
    $hrProperties->{label_id}                       = $dbItem->label_id;
    $hrProperties->{label_contract_id}        = $dbItem->label_contract_id;
    $hrProperties->{fee}                            = $dbItem->fee;
    $hrProperties->{distribution_fee}               = $dbItem->distribution_fee;
    $hrProperties->{gross_sales}                    = $dbItem->gross_sales;
    $hrProperties->{net_sales}                      = $dbItem->net_sales;
    $hrProperties->{service_id}                     = $dbItem->service_id;
    $hrProperties->{country_code}                   = $dbItem->country_code;    
}

sub _initProperties
{
    my ($self, $props) = @_;
    my $timer = Common::Timer->new();

    $self->{LabelRoyaltyLabelItemID}		= Common::FormObject::Scalar->new(value => $props->{label_royalty_label_item_id}, readOnly => 1);
    $self->{LabelRoyaltyStatementID}	= Common::FormObject::Scalar->new(value => $props->{label_royalty_statement_id});
    $self->{LabelID}					= Common::FormObject::Scalar->new(value => $props->{label_id});
    $self->{LabelContractID}	= Common::FormObject::Scalar->new(value => $props->{label_contract_id});
    $self->{Fee}			= Common::FormObject::Scalar::Money->new(value => $props->{fee});
    $self->{DistributionFee}			= Common::FormObject::Scalar::Decimal->new(value => $props->{distribution_fee});
    $self->{GrossSales}			= Common::FormObject::Scalar::Money->new(value => $props->{gross_sales});
    $self->{NetSales}			= Common::FormObject::Scalar::Money->new(value => $props->{net_sales});
    $self->{ServiceID}			= Common::FormObject::Scalar->new(value => $props->{service_id});
    $self->{CountryCode}		= Common::FormObject::Scalar->new(value => $props->{country_code});    

    # Going to grab the service, so we can include the service name for sorting purposes.
    #
    my $serviceName = "All";
    if ($props->{service_id})
    {
        my $service = RPS::DB::Item::Service->Lookup(service_id => $props->{service_id});
        $serviceName = $service->service_name;
    }
	$self->{ServiceName} = Common::FormObject::Scalar::String->new(value => $serviceName, readOnly => 1);   
	
    # Let's do the same thing for country.
    #
    my $countryName = "World";
    if ($props->{country_code})
    {
        my $country = Common::DB::Item::Country->Lookup(alpha2 => $props->{country_code});
        $countryName = $country->name;
    }
	$self->{CountryName} = Common::FormObject::Scalar::String->new(value => $countryName, readOnly => 1);  	     
    
}


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

    # Need to get the album info in here, as well as the list of statement items.
    #

	if($self->loadSubs())
	{
        my $labelID = $props->{label_id};
        $self->{Label} = RPS::Label::Label->new(labelID => $labelID);
	}

    return $self;
}


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

}


###
1;#
###



