#---------------------------------------------------------------
# ____                   _ _         ____  _                    
#|  _ \ ___  _   _  __ _| | |_ _   _/ ___|| |__   __ _ _ __ ___ 
#| |_) / _ \| | | |/ _` | | __| | | \___ \| '_ \ / _` | '__/ _ \
#|  _ < (_) | |_| | (_| | | |_| |_| |___) | | | | (_| | | |  __/
#|_| \_\___/ \__, |\__,_|_|\__|\__, |____/|_| |_|\__,_|_|  \___|
#            |___/             |___/                            
#
# Copyright (C) 2007 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#---------------------------------------------------------------
package RPS::Statement::UKMechanical::McpsStatementItem;

use strict;
use warnings;
use Carp;

use Data::Dumper;

use lib '/app/tools/common/lib';

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

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{mcpsStatementItemID})
    {
        $self->_propertiesFromDB(\%properties, $args{mcpsStatementItemID});
    }
    else
    {
        $self->_propertiesFromDefaults(\%properties);
    }

    $self->_initProperties(\%properties);

    return $self;
}


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

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


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

    $hrProperties->{mcps_statement_item_id}     = $dbItem->mcps_statement_item_id;
    $hrProperties->{mcps_statement_id}          = $dbItem->mcps_statement_id;
    $hrProperties->{mcps_license_id}            = $dbItem->mcps_license_id;
    $hrProperties->{mcps_id}                    = $dbItem->mcps_id;
    $hrProperties->{album_title}                = $dbItem->album_title;
    $hrProperties->{album_id}                   = $dbItem->album_id;
    $hrProperties->{catalog_number}             = $dbItem->catalog_number;
    $hrProperties->{artist_name}                = $dbItem->artist_name;
    $hrProperties->{product_code}               = $dbItem->product_code;
    $hrProperties->{product_type_id}            = $dbItem->product_type_id;
    $hrProperties->{dvd_category}               = $dbItem->dvd_category;
    $hrProperties->{label_name}                 = $dbItem->label_name;
    $hrProperties->{release_date}               = $dbItem->release_date;
    $hrProperties->{country_code}               = $dbItem->country_code;
    $hrProperties->{gross_units}                = $dbItem->gross_units;
    $hrProperties->{prior_units}                = $dbItem->prior_units;
    $hrProperties->{promo_units}                = $dbItem->promo_units;
    $hrProperties->{return_units}               = $dbItem->return_units;
    $hrProperties->{net_units}                  = $dbItem->net_units;
    $hrProperties->{retentions}                 = $dbItem->retentions;
    $hrProperties->{tv_retentions}              = $dbItem->tv_retentions;
    $hrProperties->{final_net_units}            = $dbItem->final_net_units;
    $hrProperties->{price}                      = $dbItem->price;
    $hrProperties->{mcps_price_type}            = $dbItem->mcps_price_type;
    $hrProperties->{adjustment}                 = $dbItem->adjustment;
    $hrProperties->{deleted}                    = $dbItem->deleted;
    $hrProperties->{deleted_date}               = $dbItem->deleted_date;
    $hrProperties->{comments}                   = $dbItem->comments;
}


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

    my $currencyCode = 'GBP';

    $self->{McpsStatementItemID}        = Common::FormObject::Scalar->new(value => $props->{mcps_statement_item_id}, readOnly => 1);
    $self->{McpsStatementID}            = Common::FormObject::Scalar->new(value => $props->{mcps_statement_id});
    $self->{McpsLicenseID}              = Common::FormObject::Scalar->new(value => $props->{mcps_license_id});
    $self->{McpsID}                     = Common::FormObject::Scalar->new(value => $props->{mcps_id});
    $self->{AlbumTitle}                 = Common::FormObject::Scalar->new(value => $props->{album_title});
    $self->{AlbumID}                    = Common::FormObject::Scalar->new(value => $props->{album_id});
    $self->{CatalogNumber}              = Common::FormObject::Scalar->new(value => $props->{catalog_number});
    $self->{ArtistName}                 = Common::FormObject::Scalar->new(value => $props->{artist_name});
    $self->{ProductCode}                = Common::FormObject::Scalar->new(value => $props->{product_code});
    $self->{ProductTypeID}              = Common::FormObject::Scalar->new(value => $props->{product_type_id});
    $self->{DVDCategory}                = Common::FormObject::Scalar->new(value => $props->{dvd_category});
    $self->{LabelName}                  = Common::FormObject::Scalar->new(value => $props->{label_name});
    $self->{ReleaseDate}                = Common::FormObject::Scalar::Date->new(value => $props->{release_date});
    $self->{CountryCode}                = Common::FormObject::Scalar->new(value => $props->{country_code});
    $self->{GrossUnits}                 = Common::FormObject::Scalar::Integer->new(value => $props->{gross_units});
    $self->{PriorUnits}                 = Common::FormObject::Scalar::Integer->new(value => $props->{prior_units});
    $self->{PromoUnits}                 = Common::FormObject::Scalar::Integer->new(value => (-1 * $props->{promo_units}));
    $self->{ReturnUnits}                = Common::FormObject::Scalar::Integer->new(value => (-1 * $props->{return_units}));
    $self->{NetUnits}                   = Common::FormObject::Scalar::Integer->new(value => $props->{net_units});
    $self->{Retentions}                 = Common::FormObject::Scalar::Integer->new(value => (-1 * $props->{retentions}));
    $self->{TVRetentions}               = Common::FormObject::Scalar::Integer->new(value => (-1 * $props->{tv_retentions}));
    $self->{FinalNetUnits}              = Common::FormObject::Scalar::Integer->new(value => $props->{final_net_units});
    $self->{Price}                      = Common::FormObject::Scalar::Money->new(value => $props->{price}, currencyCode => $currencyCode);
    $self->{McpsPriceType}              = Common::FormObject::Scalar->new(value => $props->{mcps_price_type});
    $self->{Adjustment}                 = Common::FormObject::Scalar::Boolean->new(value => $props->{adjustment});
    $self->{Deleted}                    = Common::FormObject::Scalar::Boolean->new(value => $props->{deleted});
    $self->{DeletedDate}                = Common::FormObject::Scalar::Date->new(value => $props->{deleted_date});
    $self->{Comments}                   = Common::FormObject::Scalar->new(value => $props->{comments});
}


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

###
1;#
###




