#!/usr/bin/env perl
use Getopt::Std;
getopts('t'); # testing
our($opt_t);
use strict;
use warnings;
my $JUST_TESTING = $opt_t || 0; # dumps xl file only
# export CENTRE=uclh; perl script/crons/monthly/lab_test_audit.pl # manual run
### recipients #################################################################
my @recipients = qw(raj wai.keong); #
################################################################################
BEGIN {
use lib '/home/raj/perl5/lib/perl5'; # *must* come before FindBin($Bin)
use FindBin qw($Bin); # warn $Bin; exit;
use lib $Bin . '/../../../lib';
# override default db test:
$ENV{ROSEDB_DEVINIT} = "$Bin/../../../config/rosedb_devinit_prod.pl";
}
use IO::All;
use Data::Printer;
use LIMS::Local::LIMS; # for LIMS::Model
use LIMS::Local::ScriptHelpers;
my $tools = LIMS::Local::ScriptHelpers->new();
$tools->test_only($JUST_TESTING);
my $config = $tools->config();
my $today = $tools->time_now;
my $filename = 'lab_test_audit_data.xls';
# provides access to LIMS::Model:
my $lims = LIMS::Local::LIMS->new({tools => $tools});
# 1st of month 2 months ago:
my $d1 = $today->clone->subtract( months => 2 );
# end of month, 2 months ago (ie yesterday minus 1 month):
my $d2 = $today->clone->subtract( months => 1 )->subtract( days => 1 );
my $subject = sprintf 'Lab test audit data [%s to %s]', $d1->dmy, $d2->dmy; # p $subject;
# args for Model::Roles::Query::_set_search_constraints():
my %args = (
'date_from' => $d1, # '01/01/2014' # dates OK also
'date_to' => $d2, # '31/10/2014'
); # p %args; exit;
my $xl = $lims->model('Audit')->lab_test_turnaround_export(\%args);
if ($JUST_TESTING) {
io($filename)->print($xl); exit;
}
my %mail = (
config => $config,
subject => $subject,
filename => $filename,
attachment => $xl,
);
$tools->send_mail(\%mail, \@recipients);