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

use strict;
use warnings;
use Carp;

use Data::Dumper;

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

use lib '/app/tools/rps/lib';
use RPS::ControlledComposition::ControlledComposition;
use RPS::DB::Item::CAMechanicalStatementLicense;
use RPS::Statement::Mechanical::CA::StatementItemList;
use RPS::Statement::Mechanical::CA::StatementAdjustmentItemList;
use RPS::Statement::Mechanical::CA::StatementLicenseTransactionList;

use RPS::Statement::Mechanical::StatementLicense;
use base 'RPS::Statement::Mechanical::StatementLicense';

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

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

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

    $hrProperties->{mechanical_statement_license_id} = $dbItem->ca_mechanical_statement_license_id;
    $hrProperties->{mechanical_statement_id}         = $dbItem->ca_mechanical_statement_id;
    $hrProperties->{track_license_id}                = $dbItem->ca_track_license_id;
    $hrProperties->{transaction_subtotal}            = $dbItem->transaction_subtotal;
    $hrProperties->{subtotal}                        = $dbItem->subtotal;
    $hrProperties->{previous_advance_balance}        = $dbItem->previous_advance_balance;
    $hrProperties->{applied_to_advance}              = $dbItem->applied_to_advance;
    $hrProperties->{advance_balance}                 = $dbItem->advance_balance;
    $hrProperties->{adjusted_subtotal}               = $dbItem->adjusted_subtotal;
    $hrProperties->{region_id}                       = $dbItem->region_id;
    $hrProperties->{crossed}                         = $dbItem->crossed;
}

sub _getCurrencyCode { return 'CAD'; }

sub _getStatementItemList {
    my ( $self, $statementID, $trackLicenseID ) = @_;

    return RPS::Statement::Mechanical::CA::StatementItemList->new(
        mechanicalStatementID => $statementID,
        trackLicenseID        => $trackLicenseID,
    );
}

sub _getStatementAdjustmentItemList {
    my ( $self, $statementID, $trackLicenseID ) = @_;

    return RPS::Statement::Mechanical::CA::StatementAdjustmentItemList->new(
        mechanicalStatementID => $statementID,
        trackLicenseID        => $trackLicenseID,
    );
}

sub _getLicenseTransactionList {
    my ( $self, $statementLicenseID ) = @_;

    return RPS::Statement::Mechanical::CA::StatementLicenseTransactionList->new( mechanicalStatementLicenseID => $statementLicenseID, );
}

###
1;    #
###
