Projekt

Allgemein

Profil

Herunterladen (2,22 KB) Statistiken
| Zweig: | Markierung: | Revision:
package SL::Helper::KIX18;

use strict;
use warnings;

use SL::KIX18Client;
use SL::Locale::String qw(t8);
use SL::Helper::Flash qw(flash_later);

use Try::Tiny;


use Exporter 'import';
our @EXPORT_OK = qw(create_kix18_ticket create_kix18_article);
our %EXPORT_TAGS = (all => \@EXPORT_OK,);


sub create_kix18_ticket {
my ($self) = @_;
my %params = @_;

die "Need a valid order object!" unless ref $params{order} eq 'SL::DB::Order';
my $order = delete $params{order};
try {
# create new ticket
my $customer_name = $order->customer->name;
my $title = t8("Order for #1", $customer_name);
$order->{kix18_client} //= SL::KIX18Client->new();
my $id = $order->{kix18_client}->create_ticket(Title => $title);
my $ticket = $order->{kix18_client}->get_ticket(ticket_id => $id);
die "Invalid ticket number" unless $ticket->{Ticket}{TicketNumber};

$order->transaction_description($ticket->{Ticket}{TicketNumber});
$order->ticket_id($id);
$order->order_status_id(SL::DB::Manager::OrderStatus->find_by(name => 'Ticket offen')->id);

flash_later('info', t8("Ticket with ID #1 created.", $ticket->{Ticket}{TicketNumber}));

} catch { die t8("Communication error KIX18: #1", $_ ) };
}

sub create_kix18_article {
my ($self) = @_;
my %params = @_;

die "Need a valid order object!" unless ref $params{order} eq 'SL::DB::Order';
my $order = delete $params{order};
my $customer_name = $order->customer->name;
my $title = t8("Order for #1", $customer_name);
my $note = '<b>' . t8("Details:") . '</b>' . "<br>";
foreach my $item (@{ $order->items }) {
$title .= " " . $item->description;
$note .= $item->qty . " " . $item->unit . " " . $item->description . "<br>";
}
if ($::lx_office_conf{kix18}->{kivi_order_url}) {
my $id = $order->id;
my $link = $::lx_office_conf{kix18}->{kivi_order_url} =~ s/<%order_id%>/$id/r;
$note .= t8('kivitendo Sales Order') . ': <a href="' . $link . '">' . $order->ordnumber . '</a>';
}
try {
# create article for Ticket
$order->{kix18_client} //= SL::KIX18Client->new();
$order->{kix18_client}->create_article(Subject => $title, Body => $note, TicketID => $order->ticket_id);

} catch { die t8("Communication error KIX18: #1", $_ ) };
}

1;


(11-11/21)