Projekt

Allgemein

Profil

Herunterladen (1,51 KB) Statistiken
| Zweig: | Markierung: | Revision:
package SL::BackgroundJob::CloseQuotations;

use strict;

use parent qw(SL::BackgroundJob::Base);

use SL::DB::Manager::Order;
use SL::DB::Order::TypeData qw(:types);
use SL::Locale::String qw(t8);


sub run {
my ($self, $job_obj) = @_;
$self->{job_obj} = $job_obj;
my $data = $job_obj->data_as_hash;

my $dry_run = ($data->{dry_run}) ? 1 : 0;
my $today = DateTime->today;
my $years = $data->{years} // 1;
my $end = $today->subtract(years => $years);

my $quotations = SL::DB::Manager::Order->get_all(where => [
record_type => [ REQUEST_QUOTATION_TYPE(), SALES_QUOTATION_TYPE() ],
transdate => { le => $end },
or => [ closed => 0, closed => undef],
]);

my (@req_quos, @sal_quos);

my %dispatch = (
REQUEST_QUOTATION_TYPE() => \@req_quos,
SALES_QUOTATION_TYPE() => \@sal_quos,
);

foreach my $quotation (@{ $quotations }) {
push @{ $dispatch{$quotation->record_type} }, $quotation->quonumber;

next if $dry_run;

$quotation->closed(1);
$quotation->save();
}

return $dry_run
? t8('Request quotations not yet closed: #1 Sales quotations not yet closed: #2',
join(', ', @req_quos), join(', ', @sal_quos))
: t8('Request quotations closed: #1 Sales quotations closed: #2',
join(', ', @req_quos), join(', ', @sal_quos));
}

1;

__END__

=encoding utf8

=head1 NAME

SL::BackgroundJob::CloseQuotations —
Background job for closing all request and sales quotations older than a given number of years

=head1 SYNOPSIS

=head1 AUTHOR

Niklas Schmidt


=cut

(8-8/33)