#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
#------------------------------------------------------------
package RPS::DB::Item::CAPublisherIndirectBalanceAccount;
use strict;
use warnings;
use lib '/app/tools/common/lib';
use Common::DB::Item;
use Common::DB::ItemCollection;
use Common::Assert;
use base 'Common::DB::Item';

use constant kTable => 'ca_publisher_indirect_balance_account';
use constant kDB => Common::DB::Item::kClientDB();


sub GetByPublisherID
{
    my ($class, $publisherID) = @_;
    assert($publisherID);


	my $sql = "SELECT * FROM " . kTable . " WHERE ca_publisher_id=$publisherID";
    return $class->GetAll($sql);
}

sub GetByPayorID
{
    my ($class, $payorID) = @_;
    assert($payorID);

	my $sql = "SELECT * FROM " . kTable . " WHERE payor_id=$payorID";
    return $class->GetAll($sql);
}

sub GetByPayorPublisherID
{
    my ($class, $payorID, $publisherID) = @_;
    assert($payorID);
    assert($publisherID);

	my $sql = "SELECT * FROM " . kTable . " WHERE ca_publisher_id=$publisherID AND payor_id=$payorID";
    return $class->GetAll($sql);
}

sub GetByPayorIndirectPublisherID
{
    my ($class, $payorID, $publisherID) = @_;
    assert($payorID);
    assert($publisherID);

	my $sql = "SELECT * FROM " . kTable . " WHERE indirect_publisher_id=$publisherID AND payor_id=$payorID AND ca_publisher_id NOT IN (select ca_publisher_id from ca_publisher where status=0)";
    return $class->GetAll($sql);
}

sub GetAllWithPendingTransactions
{
    my ($class, $payorID) = @_;

    my $sql = "SELECT * FROM " . kTable . " WHERE finance_account_id in (select finance_account_id from pending_transaction where processed = 0)";
    if ($payorID)
    {
        $sql .= " AND payor_id=$payorID";
    }

    return $class->GetAll($sql);
}


1;
