#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#------------------------------------------------------------
package RPS::Statement::UKMechanical::BaseStatement;
use strict;
use warnings;

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

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

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

##  !!! This file has not been fully updated yet.
##


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

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

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

    $self->_initProperties(\%properties);

    return $self;
}






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

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


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

    assert($dbItem);

    $hrProperties->{mcps_statement_id}          = $dbItem->mcps_statement_id;
    $hrProperties->{uk_mechanical_run_id}       = $dbItem->uk_mechanical_run_id;
    $hrProperties->{status}                     = $dbItem->status;
    $hrProperties->{mcps_scheme}                = $dbItem->mcps_scheme;
    $hrProperties->{net_units}                  = $dbItem->net_units;
    $hrProperties->{gross_units}                = $dbItem->gross_units;
    $hrProperties->{royalty_payable_units}      = $dbItem->royalty_payable_units;
    $hrProperties->{retentions_held}            = $dbItem->retentions_held;
    $hrProperties->{retentions_liquidated}      = $dbItem->retentions_liquidated;
    $hrProperties->{estimated_liability}        = $dbItem->estimated_liability;
    $hrProperties->{date_created}               = $dbItem->date_created;
    $hrProperties->{date_modified}              = $dbItem->date_modified;
	$hrProperties->{created_by}                 = $dbItem->created_by;
	$hrProperties->{modified_by}                = $dbItem->modified_by;
}


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


    # !!! Eventually we're going to want to use the Publisher's currency code, but for
    # !!! now we'll assume GBP.
    #
    my $currencyCode = 'GBP';

    $self->{McpsStatementID}        = Common::FormObject::Scalar->new(value => $props->{mcps_statement_id}, readOnly => 1);
    $self->{UKMechanicalRunID}		= Common::FormObject::Scalar->new(value => $props->{uk_mechanical_run_id}, readOnly => 1);
    $self->{Status}                 = Common::FormObject::Scalar->new(value => $props->{status});
    $self->{McpsScheme}             = Common::FormObject::Scalar->new(value => $props->{mcps_scheme});
    $self->{NetUnits}               = Common::FormObject::Scalar::Integer->new(value => $props->{net_units});
    $self->{GrossUnits}             = Common::FormObject::Scalar::Integer->new(value => $props->{gross_units});
    $self->{RoyaltyPayableUnits}    = Common::FormObject::Scalar::Integer->new(value => $props->{royalty_payable_units});
    $self->{RetentionsHeld}         = Common::FormObject::Scalar::Integer->new(value => $props->{retentions_held});
    $self->{RetentionsLiquidated}   = Common::FormObject::Scalar::Integer->new(value => $props->{retentions_liquidated});
    $self->{EstimatedLiability}     = Common::FormObject::Scalar::Money->new(value => $props->{estimated_liability}, precision => '.4', currencyCode => $currencyCode);

    $self->{DateCreated}            = Common::FormObject::Scalar::DateTime->new(value => $props->{date_created}, readOnly => 1);
    $self->{DateModified}           = Common::FormObject::Scalar::DateTime->new(value => $props->{date_modified}, readOnly => 1);
	$self->{CreatedBy}              = Common::FormObject::Scalar::UserName->new(value => $props->{created_by}, readOnly => 1);
	$self->{ModifiedBy}             = Common::FormObject::Scalar::UserName->new(value => $props->{modified_by}, readOnly => 1);

}


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

###
1;#
###
