Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision ddea4659

Von Jan Büren vor 12 Monaten hinzugefügt

  • ID ddea46594d9207aac6c8b39995690cc8df1680ec
  • Vorgänger 956805a6
  • Nachfolger f0c62c1b

kix18: Hintergrund-Job um geschlossene Tickets mit VK-Aufträgen zu synchronisieren

Unterschiede anzeigen:

SL/BackgroundJob/KIXSetTicketState.pm
package SL::BackgroundJob::KIXSetTicketState;
use strict;
use parent qw(SL::BackgroundJob::Base);
use SL::DB::Order;
use SL::KIX18Client qw(:all);
sub run {
my ($self, $db_obj) = @_;
my $data = $db_obj->data_as_hash;
my $dry_run = ($data->{dry_run}) ? 1 : 0;
my $closed_state_id = $data->{closed_state_id} || 4;
my $open_ticket_id = SL::DB::Manager::OrderStatus->find_by(name => 'Ticket offen')->id;
my $closed_ticket_id = SL::DB::Manager::OrderStatus->find_by(name => 'Ticket erledigt')->id;
my $orders = SL::DB::Manager::Order->get_all(query => [ order_status_id => $open_ticket_id,
record_type => 'sales_order',
'!ticket_id' => undef ]);
my $c = SL::KIX18Client->new();
my @ord;
foreach my $order (@{ $orders }) {
next unless $order->ticket_id;
my $ticket = $c->get_ticket(ticket_id => $order->ticket_id);
if ($ticket->{Ticket}{StateID} == $closed_state_id) {
push @ord, $order->ordnumber;
next if $dry_run;
$order->order_status_id($closed_ticket_id);
$order->save;
}
}
return "Ticket-Status auf erledigt gesetzt bei:" . join (', ', @ord) . ($dry_run ? " TESTLAUF noch nicht getan" : " getan");
}
1;
__END__
=encoding utf8
=head1 NAME
SL::BackgroundJob::KIXSetTicketState
Background job for state updates of all sales orders who have ticket_id.
Data Options include dry_run and closed_state_id which defaults to 4:
dry_run: 0
closed_state_id: 4
=head1 SYNOPSIS
=head1 AUTHOR
Jan Büren
=cut

Auch abrufbar als: Unified diff