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

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

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

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

    $self->_initProperties( \%properties, $args{skipTransactionsList} );

    return $self;
}

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

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

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

    $hrProperties->{label_royalty_statement_id} = $dbItem->label_royalty_statement_id;
    $hrProperties->{label_royalty_run_id}       = $dbItem->label_royalty_run_id;
    $hrProperties->{payee_id}                   = $dbItem->payee_id;
    $hrProperties->{payor_id}                   = $dbItem->payor_id;
    $hrProperties->{previous_balance}           = $dbItem->previous_balance;
    $hrProperties->{balance}                    = $dbItem->balance;
    $hrProperties->{min_payment}                = $dbItem->min_payment;
    $hrProperties->{total}                      = $dbItem->total;
    $hrProperties->{transaction_subtotal}       = $dbItem->transaction_subtotal;
    $hrProperties->{amount_due}                 = $dbItem->amount_due;
    $hrProperties->{on_hold}                    = $dbItem->on_hold;
}

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

    $self->{LabelRoyaltyStatementID} = Common::FormObject::Scalar->new( value => $props->{label_royalty_statement_id}, readOnly => 1 );
    $self->{LabelRoyaltyRunID}       = Common::FormObject::Scalar->new( value => $props->{label_royalty_run_id} );
    $self->{PayeeID}                 = Common::FormObject::Scalar->new( value => $props->{payee_id} );
    $self->{PayorID}                 = Common::FormObject::Scalar->new( value => $props->{payor_id} );
    $self->{PreviousBalance}     = Common::FormObject::Scalar::Money->new( value => $props->{previous_balance} );
    $self->{Total}               = Common::FormObject::Scalar::Money->new( value => $props->{total} );
    $self->{TransactionSubtotal} = Common::FormObject::Scalar::Money->new( value => $props->{transaction_subtotal} );
    $self->{Balance}             = Common::FormObject::Scalar::Money->new( value => $props->{balance} );
    $self->{MinPayment}          = Common::FormObject::Scalar::Money->new( value => $props->{min_payment} );
    $self->{AmountDue}           = Common::FormObject::Scalar::Money->new( value => $props->{amount_due} );
    $self->{OnHold} = Common::FormObject::Scalar::Boolean->new( value => $props->{on_hold}, readOnly => 1 );

    $self->{LabelPayee} = RPS::LabelPayee::LabelPayee->new( labelPayeeID => $props->{payee_id}, loadSubs => 0 );
}

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

###
1;    #
###
