Advertisement
Guest User

Untitled

a guest
Aug 1st, 2012
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 3.03 KB | None | 0 0
  1.  
  2. #!/usr/bin/perl -w
  3.  
  4. use lib '/usr/share/request-tracker4/lib';
  5. use strict;
  6. use warnings;
  7. use utf8;
  8.  
  9. use RT;
  10. use RT::Ticket;
  11. use MIME::Entity;
  12. use CGI;
  13. use Encode;
  14.  
  15. my $cgi = CGI->new;
  16.  
  17. sub endScript
  18. {
  19.     my ($code, $message) = @_;
  20.     print "ResultCode=$code\n";
  21.     print "ResultMessage=$message\n";
  22.     exit;
  23. }
  24.  
  25. print $cgi->header(
  26.     -type => 'text/plain',
  27.     -charset => 'utf-8');
  28.  
  29. my $OrderAccount = decode("utf8", $cgi->param('OrderAccount'));
  30. my $OrderId = decode("utf8", $cgi->param('OrderId'));
  31. my $CustName = decode("utf8", $cgi->param('CustName'));
  32. my $LeasingCondition = decode("utf8", $cgi->param('LeasingCondition'));
  33. my $Amount = decode("utf8", $cgi->param('Amount'));
  34. my $VB1 = decode("utf8", $cgi->param('VB1'));
  35. my $VB2 = decode("utf8", $cgi->param('VB2'));
  36. my $Requestor = decode("utf8", $cgi->param('Requestor'));
  37. my $DataAreaId = decode("utf8", $cgi->param('DataAreaId'));
  38. my $Queue = decode("utf8", $cgi->param('Queue'));
  39.  
  40. endScript(-1, "OrderAccount nicht angegeben.") unless $OrderAccount;
  41. endScript(-2, "OrderId nicht angegeben.") unless $OrderId;
  42. endScript(-3, "Requestor nicht angegeben.") unless $Requestor;
  43. endScript(-4, "DataAreaId nicht angegeben.") unless $DataAreaId;
  44. endScript(-5, "Queue nicht angegeben.") unless $Queue;
  45. endScript(-6, "CustName nicht angegeben.") unless $CustName;
  46. endScript(-7, "LeasingCondition nicht angegeben.") unless $LeasingCondition;
  47. endScript(-8, "Amount nicht angegeben.") unless $Amount;
  48. endScript(-9, "VB1 nicht angegeben.") unless $VB1;
  49. endScript(-10, "VB2 nicht angegeben.") unless $VB2;
  50.  
  51. RT::LoadConfig();
  52. RT::Init();
  53.  
  54. my $subject = "$DataAreaId - $OrderAccount - $OrderId - $LeasingCondition";
  55. my $tickets = RT::Tickets->new($RT::SystemUser);
  56. $tickets->LimitQueue( VALUE => $Queue );
  57. $tickets->LimitStatus( VALUE => 'new' );
  58. $tickets->LimitStatus( VALUE => 'open' );
  59. $tickets->LimitSubject( OPERATOR => '=', VALUE => $subject );
  60. $tickets->OrderBy( FIELD => 'Id', ORDER => 'DESC' );
  61.  
  62. my $ticket = $tickets->First;
  63.  
  64. if (! $ticket)
  65. {
  66.     $ticket = new RT::Ticket($RT::SystemUser);
  67.     my $msg = "Ein Leasing-Auftrag wurde erfasst:\n\n"
  68.         . "Auftragsnummer  : $OrderId\n"
  69.         . "Auftragskonto   : $OrderAccount\n"
  70.         . "Kunde           : $CustName\n"
  71.         . "Gesamtwert      : $Amount (ohne Verbrauchsmaterialien)\n"
  72.         . "Leasing-Angebot : $LeasingCondition\n"
  73.         . "VB1             : $VB1\n"
  74.         . "VB2             : $VB2\n";
  75.  
  76.     my %values = (
  77.         Queue => $Queue,
  78.         Subject => $subject,
  79.         Requestor => $Requestor,
  80.         MIMEObj => MIME::Entity->build( Data => $msg, Type => "text/plain")
  81.     );
  82.  
  83.     my ($id, $transactionid, $errmsg) = $ticket->Create(%values);
  84.     endScript(-256, $errmsg) unless $id;
  85.     print "ID=$id\n";
  86. }
  87. else {
  88.     print "ID=", $ticket->id, "\n";
  89.     if ($ticket->RequestorAddresses !~ /$Requestor/i) {
  90.         my ($result, $errmsg) = $ticket->AddWatcher( Type => 'Requestor', Email => $Requestor );
  91.         endScript(-257, $errmsg) unless $result;
  92.     }
  93.     $ticket->SetTold;
  94. }
  95.  
  96. print "Subject=$subject\n";
  97. print "Requestors=", $ticket->RequestorAddresses, "\n";
  98. endScript(0, "OK");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement