use strict;

use lib '/app/tools/common/lib';
use Common::RSApp;

use lib '/app/tools/rps/lib';
use RPS::DB::Item::MechanicalStatementItem;
use RPS::DB::Item::MechanicalStatement;
use RPS::DB::Item::SaleMechanicalStatementItemMap;
use RPS::DB::Item::SaleRunMap;


my @clientIDs;
push @clientIDs, _getLocalClientIDs();

foreach my $clientID (@clientIDs) {
    next unless ($clientID);
    print $clientID."\n";


    my $app = Common::RSApp->new(clientID => $clientID);

    _convert();
}


sub _convert
{
    my $saleMapEntries = RPS::DB::Item::SaleMechanicalStatementItemMap->GetAll();

    while (my $oldMapItem = $saleMapEntries->next())
    {
        my $item = RPS::DB::Item::MechanicalStatementItem->Lookup(mechanical_statement_item_id => $oldMapItem->mechanical_statement_item_id);
        if ($item)
        {
            my $statement = RPS::DB::Item::MechanicalStatement->Lookup(mechanical_statement_id => $item->mechanical_statement_item_id);
            if ($statement)
            {
                my $newMap = RPS::DB::Item::SaleRunMap->Create
                (
                    run_id => $statement->mechanical_run_id,
                    run_type => RPS::DB::Item::SaleRunMap::kRunTypeMechanical,
                    statement_item_id => $item->mechanical_statement_item_id,
                    status => RPS::DB::Item::SaleRunMap::kStatusPaid,
                );
                $newMap->save();
            }
        }
    }
}


sub _getLocalClientIDs
{
    # We have a nifty little script that will give us a list of client databases.
    #
    my $clientListString = `/app/tools/rps/bin/db/list_client_dbs.pl`;
    chomp $clientListString;


    # Find the client id that matches each database.
    #
    my @ids;
    my @dbNames = split(/ /, $clientListString);
    foreach my $dbName (@dbNames)
    {
        my $id = Common::RSDB::DBNameToClientID($dbName);
        push @ids, $id;

    }

#    return @ids;
return 3;
}

