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

