#!/usr/bin/perl
use strict;

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

use constant WMG      => 21;
use constant BASE_DIR => '/app/shared/sale_import/warner_music_group/exceptions/';

$|++;

my $atomic = $ARGV[0] || 0;
my $dir = $atomic == 0 ? 'subscription/' : 'wireless/';
my $db = Common::RSDB->new( client_id => WMG );
my $dbh = $db->DBH;

my $sql =
  'select distinct service.service_id, service_name from service join file using(service_id) where period_id=0 and atomic=? order by 2';
my $sth = $dbh->prepare($sql);
$sth->execute($atomic);

while ( my $row = $sth->fetchrow_arrayref() ) {
    print STDERR "operating on $row->[1]...\n";
    $row->[1] =~ s/\s+//g;
    my $fileName = BASE_DIR . $dir . $row->[1] . ".tab";

    gen_exception_report( $row->[0], $fileName );
}

sub gen_exception_report {
    my $SID     = shift;
    my $outFile = shift;

    my $sql =
        "SELECT file.orig_file_name, sale.* FROM file join sale using(file_id) "
      . "WHERE period_id=0 AND product_id IS NULL AND file.service_id=$SID "
      . "ORDER BY 1, sale.file_id, sale.line_num";

    print STDERR "run for $SID, dump to $outFile\n";
    system(qq|mysql -uroot -Be "$sql" C_WARNER > $outFile|);
}

sub usage {
    my $err = shift;

    print "ERROR: $err\n";
    print "Usage: $0 <atomic>\n";

    return 1;
}
