package FS::Cron::agent_email;
use base qw( Exporter );

use strict;
use vars qw( @EXPORT_OK $DEBUG );
use Date::Simple qw(today);
use URI::Escape;
use FS::Mason qw( mason_interps );
use FS::Conf;
use FS::Misc qw(send_email);
use FS::Record qw(qsearch);# qsearchs);
use FS::agent;

@EXPORT_OK = qw ( agent_email );
$DEBUG = 0;

sub agent_email {
  my %opt = @_;

  my $conf = new FS::Conf;

  my $day = $conf->config('agent-email_day') or return;
  return unless $day == today->day;

  if ( 1 ) { #XXX if ( %%%RT_ENABLED%%% ) {
    require RT;
    RT::LoadConfig();
    RT::Init();
    RT::ConnectToDatabase();
  }

  my $from = $conf->config('invoice_from');

  my $outbuf = '';;
  my( $fs_interp, $rt_interp ) = mason_interps('standalone', 'outbuf'=>\$outbuf);

  my $comp = '/search/cust_main.html';
  my %args = (
    'cust_fields' => 'Cust# | Cust. Status | Customer | Current Balance',
    '_type'       => 'html-print',
  );
  my $query = join('&', map "$_=".uri_escape($args{$_}), keys %args );

  my $extra_sql = $opt{a} ? " AND agentnum IN ( $opt{a} ) " : '';

  foreach my $agent ( qsearch({
                        'table'     => 'agent',
                        'hashref'   => {
                          'disabled'      => '',
                          'agent_custnum' => { op=>'!=', value=>'' },
                        },
                        'extra_sql' => $extra_sql,
                      })
                    )
  {

    $FS::Mason::Request::QUERY_STRING = $query. '&agentnum='. $agent->agentnum;
    $fs_interp->exec($comp);

    my @email = $agent->agent_cust_main->invoicing_list or next;

    warn "emailing ". join(',',@email). " for agent ". $agent->agent. "\n"
      if $DEBUG;
    send_email(
      'from'         => $from,
      'to'           => \@email,
      'subject'      => 'Customer report',
      'body'         => $outbuf,
      'content-type' => 'text/html',
      #'content-encoding'
    ); 

    $outbuf = '';

  }

}

1;
