#---------------------------------------------------------------
# ____                   _ _         ____  _
#|  _ \ ___  _   _  __ _| | |_ _   _/ ___|| |__   __ _ _ __ ___
#| |_) / _ \| | | |/ _` | | __| | | \___ \| '_ \ / _` | '__/ _ \
#|  _ < (_) | |_| | (_| | | |_| |_| |___) | | | | (_| | | |  __/
#|_| \_\___/ \__, |\__,_|_|\__|\__, |____/|_| |_|\__,_|_|  \___|
#            |___/             |___/
#
# Copyright (C) 2010 RoyaltyShare, Inc.   All Rights Reserved
#---------------------------------------------------------------
package BookPub::Price::SalePriceException::WithSale;
use strict;
use warnings;

use lib '/app/tools/common/lib';
use lib '/app/tools/bookpub/lib';
use BookPub::Matcher::Sale::Revenue;
use BookPub::DB::Item::Sale;

use Common::RSApp;
use Common::Util;
use Common::Assert;
use Common::FormObject;

use base 'BookPub::Price::SalePriceException';

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

    my $dbItem = BookPub::DB::Item::Sale->LookupWithPriceException($saleID);

    $self->_propertiesFromDBItem( $hrProperties, $dbItem ) if ($dbItem);
}

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

    $self->SUPER::_propertiesFromDBItem( $hrProperties, $dbItem );

    $hrProperties->{modified} = $dbItem->{modified};

    if ( ref($dbItem) eq 'BookPub::DB::Item::Sale' ) {
        $hrProperties->{_dbItem} = $dbItem;
    } else {
        $hrProperties->{_dbItem} = BookPub::DB::Item::Sale->Lookup( sale_id => $dbItem->sale_id );
    }
}

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

    $self->SUPER::_initProperties($props);

    $self->{Modified} = $props->{modified} if ( defined( $props->{modified} ) );
    $self->{Sale} = new BookPub::Matcher::Sale::Revenue( dbItem => $props->{_dbItem} );
}

###
1;    #
###
