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


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

use constant kStatusNotQueued => 0;
use constant kStatusInQueue => 1;
use constant kStatusRunning => 2;   
use constant kStatusComplete => 3; 
use constant kStatusError => 4; 
use constant kStatusAborted => 5; 


# These correspond to the ENUM for the 'mcsp_scheme' column.
#
use constant kSchemeAP1 => 'AP1';
use constant kSchemeDVD1 => 'DVD1';
use constant kSchemeAVP => 'AVP';

use constant kFilterByTotalLessThanZero => 1;
use constant kFilterByTotalGreaterThanZero => 2;
use constant kFilterByTotalGreaterThatMinPayment => 3;
use constant kFilterByOnHold => 4;



sub GetByRunID
{
    my ($class, $runID) = @_;
    assert($runID);

    my $sql = "SELECT * from mcps_statement WHERE uk_mechanical_run_id=$runID";
    return $class->GetAll($sql);
}


sub GetCountByRunID
{
    my ($class, $runID, $payorID) = @_;
    assert($runID);
    my $sql = "SELECT COUNT(*) from mcps_statement where uk_mechanical_run_id=$runID";
    if ($payorID)
    {
        $sql .=" and payor_id=$payorID";
    }
    my $dbo = Common::RSApp::GetClientDB();
    my $sth = $dbo->DoCmd($sql);
    my $hr = $sth->fetchrow_hashref();
    return $hr->{'COUNT(*)'};
}


sub GetDistinctPayorsByRunID
{
    my ($class, $runID) = @_;
    assert($runID);

    my @payorIDs;

    my $sql = "SELECT distinct payor_id from mcps_statement where uk_mechanical_run_id=$runID";
    my $dbo = Common::RSApp::GetClientDB();
    my $sth = $dbo->DoCmd($sql);
    while (my $hr = $sth->fetchrow_hashref())
    {
        push @payorIDs, $hr->{payor_id};
    }

    return @payorIDs;
}

sub GetIDByRunAndMcpsScheme
{
    my ($class, $runID, $mcpsScheme) = @_;
    assert($runID);
    
    my $dbo = Common::RSApp::GetClientDB();

    my $sql = "SELECT mcps_statement_id from " . kTable . " WHERE uk_mechanical_run_id=$runID and mcps_scheme='$mcpsScheme'";

    my $sth = $dbo->DoCmd( $sql );
    
    my ($id) = $sth->fetchrow_array();    
    
    return $id;

}




1;
