#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#------------------------------------------------------------
package BookPub::Matcher::Command::Unmatch::Revenue;
use strict;
use warnings;

use lib '/app/tools/common/lib';
use RSApache::Response::XSLT;
use Common::Assert;

use lib '/app/tools/bookpub/lib';
use BookPub::Matcher::Command::Sale;
use BookPub::Matcher::Sale::Revenue;
use BookPub::Tracker::File;
use BookPub::DB::Item::ProductInputMap;
use BookPub::DB::Item::Sale;
use BookPub::Price::Validator;

use base 'BookPub::Matcher::Command::Unmatch';

sub cmd  { return "unmatch"; }
sub area { return "matcher"; }

use constant kTemplate => '/app/tools/bookpub/templates/main/matcher.xsl';

sub _getSaleFromSaleID {
    my ( $self, $saleID ) = @_;
    return BookPub::Matcher::Sale::Revenue->new( saleID => $saleID );
}

sub _getSaleItemsWithMapID {
    my ( $self, $mapID ) = @_;
    return BookPub::DB::Item::Sale->GetSalesWithMapID($mapID);
}

sub _saleObjFromSaleDBItem {
    my ( $self, $saleDB ) = @_;
    return BookPub::Matcher::Sale::Revenue->new( dbItem => $saleDB );
}

sub _fileFromFileID {
    my ( $self, $fileID ) = @_;
    return BookPub::Tracker::File->new( fileID => $fileID );
}

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

    # Remove price validation
    my $validator = new BookPub::Price::Validator( saleID => $saleID );
    $validator->clear();

    # Remove any automatic rules for this sale.
    my $priceRule = new BookPub::Price::SalePriceExceptionRule( saleID => $saleID );
    $priceRule->delete() if ($priceRule);

}

sub _redirectToNextSale {
    my ( $self, $nextSaleID, $pageParam ) = @_;
    assert($nextSaleID);
    return RSApache::Response::Redirect->new("/bookpub/matcher?c=sale&sale=$nextSaleID&trackerPage=$pageParam");
}

sub _redirectToFilePage {
    my ( $self, $fileID, $pageParam ) = @_;
    assert($fileID);
    return RSApache::Response::Redirect->new( "/bookpub/matcher?c=sale&file=" . $fileID . "&trackerPage=$pageParam" );
}

1;
